如何将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文件中:
- .NET 4,AllowPartiallyTrustedCallers属性和SecurityCritical等安全标记
- 关闭Excel应用程序的正确方法
- CorrelationManager.LogicalOperationStack是否与Parallel.For,Tasks,Threads等兼容
- entity framework5:代码优先的周期性关系问题
- ASP.Net WebApi:如何在运行时加载其他控制器
- 使用MVVM中的后台worker更新ObservableCollection
- 尝试编写只读数据库 – System.Data.SQLite
- 为什么重用DataContext会对性能产生负面影响?
- 使用Monotouch处理iOS的UITableViewSource事件