【发布时间】:2010-01-25 09:06:06
【问题描述】:
如何将 .All() 方法的结果作为 DataTable 获得?
目前它返回 IQueryable,它不能用作 WinForms DataGridView 控件的数据源。
dataGridView1.DataSource = Product.All(); // not working
【问题讨论】:
如何将 .All() 方法的结果作为 DataTable 获得?
目前它返回 IQueryable,它不能用作 WinForms DataGridView 控件的数据源。
dataGridView1.DataSource = Product.All(); // not working
【问题讨论】:
您可以将 List 绑定到 DataGridView 控件,因此只需在 IQueryable 上使用 ToList() 方法,例如
MyDataGridView.DataSource = MyObject.All().ToList();
【讨论】:
除非您的 Product 类实现以下之一:IList、IListSource、IBindingList、IBindingListView;您将无法将结果绑定到您的 DataGridView。
【讨论】:
对于双向绑定,您可以使用BindingList
dataGridView1.DataSource = new BindingList<Product>(Product.All().ToList());
当您从 DataGridView 添加/删除行时,BindingList 将自动更新,而当您将项目添加到绑定列表时,DataGridView 将自动更新。
如果要在修改Product时自动更新DataGridView,Product必须实现INotifyPropertyChaged
【讨论】: