绑定数据源正在改变我的列

时间:2015-10-05 09:51:42

标签: c# winforms datagridview

我以编程方式将DataGridView的数据集绑定到List<MyType>。我在设计器中设置了列名和类型:

enter image description here

当我第一次绑定列表时,填充后,事情看起来很棒:

enter image description here

但是当我将数据集重新绑定到列表(在重新填充列表后使其更新)时,列名称和类型似乎是从属性名称自动生成的(注意空格消失)和类型:< / p>

enter image description here

填充List时的代码如下所示:

GridView.DataSource = null;
ListOfItems.Clear();
Populate(ListOfItems);
GridView.DataSource = ListOfItems

我对这种重置绑定的hacky方式不太满意,但看起来似乎不起作用,修改列表内容并不会刷新视图。

这是GridView上的设置问题,还是我需要修改我的代码?

3 个答案:

答案 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;