DataTable
をDataGrid
にバインドする際に問題があります。私はすでに解決策を探しましたが、エラーを取り除くことはできません。 WindowsFormsを使用する場合、バインディングは正常に機能するため、DataTable
は正しいです。WPF-DataGridにバインドできません。
エラーメッセージ: AmbiguousMatchExceptionは処理されませんでした
出典:mscorlib
悪いリンクなどを取り除くために、すでに新しいプロジェクトをセットアップしています。
XAML-Code:
<DataGrid x:Name="grid1" Margin="10" ItemsSource="{Binding}"
AutoGenerateColumns="True"></DataGrid>
私はすでに次のC#-Codeを試しました:
grid1.ItemsSource = dt.DefaultView;
または
grid1.DataContext = dt.DefaultView;
または
grid1.DataContext = dtex;
どんな助けも大歓迎です。
Csファイル内
DataTable employeeData = CreateDataTable();
gridEmployees.DataContext = employeeData.DefaultView;
Xamlファイル
<DataGrid Name="gridEmployees" ItemsSource="{Binding}">
using (SqlCeConnection con = new SqlCeConnection())
{
con.ConnectionString = connectionString;
con.Open();
SqlCeCommand com = new SqlCeCommand("SELECT S_no,Name,Father_Name")
SqlCeDataAdapter sda = new SqlCeDataAdapter(com);
System.Data.DataTable dt = new System.Data.DataTable();
sda.Fill(dt);
dataGrid1.ItemsSource = dt.DefaultView;
dataGrid1.AutoGenerateColumns = true;
dataGrid1.CanUserAddRows = false;
}
。csファイル内
grid.DataContext = table.DefaultView;
xamlファイル内
<DataGrid Name="grid" ItemsSource="{Binding}">
Rohit Vats 彼の Comment でも言及されているように、DataTable
の構造が間違っていると思います。
var t = new DataTable();
// create column header
foreach ( string s in identifiders ) {
t.Columns.Add(new DataColumn(s)); // <<=== i'm expecting you don't have defined any DataColumns, haven't you?
}
// Add data to DataTable
for ( int lineNumber = identifierLineNumber; lineNumber < lineCount; lineNumber++ ) {
DataRow newRow = t.NewRow();
for ( int column = 0; column < identifierCount; column++ ) {
newRow[column] = fileContent.ElementAt(lineNumber)[column];
}
t.Rows.Add(newRow);
}
return t.DefaultView;
私はこのDataTableをValueConverter
で使用しましたが、次のバインディングでチャームのように機能します。
<DataGrid AutoGenerateColumns="True" ItemsSource="{Binding Path=FileContent, Converter={StaticResource dataGridConverter}}" />
そのため、ValueConverter
はバウンドデータを変換します(それが何であれ、私の場合はList<string[]>
)を上記のコードに示すようにDataTable
に追加し、このDataTable
をDataGrid
に渡します。指定されたデータ列を使用して、データグリッドは必要な列を生成して視覚化できます。
簡単に言うと、私の場合、DataTable
へのバインドは魅力のように機能します。
WPFでDataGridを使用できます
SqlDataAdapter da = new SqlDataAdapter("Select * from Table",con);
DataTable dt = new DataTable("Call Reciept");
da.Fill(dt);
DataGrid dg = new DataGrid();
dg.ItemsSource = dt.DefaultView;