如何将DataTable绑定到Datagrid

我有一个问题将DataTable绑定到DataGrid 。 我已经搜索过解决方案但是无法摆脱错误。 使用WindowsForms时绑定工作正常,因此DataTable是正确的。 我只是无法将其绑定到WPF-DataGrid。

错误消息:未处理AmbiguousMatchException
资料来源:mscorlib

我已经设置了新项目来摆脱任何不良链接等。

XAML的代码:

  

我已经尝试过跟随C#-Code:

 grid1.ItemsSource = dt.DefaultView; 

要么

 grid1.DataContext = dt.DefaultView; 

要么

 grid1.DataContext = dtex; 

任何帮助表示赞赏。

在cs文件中

 DataTable employeeData = CreateDataTable(); gridEmployees.DataContext = employeeData.DefaultView; 

在xaml文件中

  
 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文件中

  

您可以在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; 

正如Rohit Vats在他的评论中提到的那样,我期待你的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; 

我在ValueConverter使用了这个DataTable,它就像一个带有以下绑定的魅力。

XAML:

   

它的作用是什么, ValueConverter将我的有界数据(在我的情况下,它是一个List )转换为DataTable ,如上面的代码所示,并将此DataTable传递给DataGrid 。 使用指定的数据列,数据网格可以生成所需的列并将其可视化。

简而言之,在我的例子中,对DataTable的绑定就像一个魅力。

在cs文件中:

  private DataTable _dataTable; public DataTable DataTable { get { return _dataTable; } set { _dataTable = value; } } private void Window_Loaded(object sender, RoutedEventArgs e) { this._dataTable = new DataTable("table"); this._dataTable.Columns.Add("col0"); this._dataTable.Columns.Add("col1"); this._dataTable.Columns.Add("col2"); this._dataTable.Rows.Add("data00", "data01", "data02"); this._dataTable.Rows.Add("data10", "data11", "data22"); this._dataTable.Rows.Add("data20", "data21", "data22"); this.grid1.DataContext = this; } 

在Xaml文件中: