我在使用数据网格视图时遇到问题。我附上了带有代码和错误消息的图像。我想知道这个错误的原因。谢谢。
问问题
244 次
2 回答
0
而不是设置DataMember
简单地调用绑定方法dataGridView1.DataBind()
。正如MSDN所述,DataMember
它用于以下用途:
获取或设置 DataGridView 正在为其显示数据的数据源中的列表或表的名称。
于 2012-06-17T05:01:36.023 回答
0
您不需要 LINQ 查询。只需将列表设置为数据源。在这种情况下无需设置 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 链接上阅读有关此内容的更多信息
但是,在您的情况下,这样做与设置productList
为 DataSource 相同(我的意思是结果将是相同的,因为 LINQ 查询中不涉及排序或分组)。
如果你想玩 LINQ,试试这个(你的列表将按ProductPrice
升序排列)
var p = from s in productList orderby s.ProductPrice select s;
dataGridView1.DataSource = p.ToList();
于 2012-06-17T06:18:02.317 回答