我遇到了数据网格视图的问题。我附上了代码&错误信息。我想知道这个错误的原因。感谢。
答案 0 :(得分:0)
而不是设置DataMember
只需调用绑定方法dataGridView1.DataBind()
。如MSDN所述,DataMember
用于以下内容:
获取或设置DataGridView正在为其显示数据的数据源中的列表或表的名称。
答案 1 :(得分:0)
您不需要LINQ查询。只需将列表设置为DataSource即可。在这种情况下,无需设置DataMember。
private void Form4_Load(object sender, EventArgs e)
{
List<Products> productList = new List<Products>()
{
new Products{ProductName = "P1", ProductPrice = 56, Category = "c1"},
new Products{ProductName = "P2", ProductPrice = 36, Category = "c1"}
};
//var p = from s in productList select s;
dataGridView1.DataSource = productList;
//dataGridView1.DataMember = p.ToString();
}
修改强>
LINQ查询返回IEnumerable
;但是DataGridView类支持标准的Windows窗体数据绑定模型。这意味着数据源可以是实现以下接口之一的任何类型:IList,IListSource,IBindingList和IBindingListView。因此,您需要将ToList()
调用到LINQ结果中。请在此MSDN Link
但是在你的情况下这样做就像将productList
设置为DataSource一样(我的意思是结果将是相同的,因为LINQ查询中没有涉及排序或分组)。
如果您想使用LINQ,请尝试此操作(您的列表将按ProductPrice
按升序排序)
var p = from s in productList orderby s.ProductPrice select s;
dataGridView1.DataSource = p.ToList();