我以编程方式将DataGridView
的数据集绑定到List<MyType>
。我在设计器中设置了列名和类型:
当我第一次绑定列表时,填充后,事情看起来很棒:
但是当我将数据集重新绑定到列表(在重新填充列表后使其更新)时,列名称和类型似乎是从属性名称自动生成的(注意空格消失)和类型:< / p>
填充List
时的代码如下所示:
GridView.DataSource = null;
ListOfItems.Clear();
Populate(ListOfItems);
GridView.DataSource = ListOfItems
我对这种重置绑定的hacky方式不太满意,但看起来似乎不起作用,修改列表内容并不会刷新视图。
这是GridView上的设置问题,还是我需要修改我的代码?
答案 0 :(得分:4)
您应该自己创建并添加列,并将AutoGenerateColumns
设置为false
,以防止生成不需要的列。
this.dataGridView1.AutoGenerateColumns = false;
如果您使用Windows窗体设计器执行数据绑定和创建列,您将受益于标准生成的代码。但是如果你想要自己生成代码,你应该注意代码的多个方面。
例如,当您使用绑定源时,将网格的数据源设置为该绑定源,设计器将查看绑定源公开的列,并在设计时将这些列添加到网格中,并添加该行用于禁用自动生成列的代码。
答案 1 :(得分:2)
是的,设置DataSource
会导致网格重新生成列。
使用模型上的属性或重命名代码中的列:Custom column names for DataGridView with associated DataSource。
您也可以disable automatic column generation。然后,您必须确保列的名称映射到您的属性名称。
答案 2 :(得分:-1)
请不要null
GridView.DataSource
。
评论此行
\\GridView.DataSource = null;