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

Mr.*_*Boy 4 c# datagridview winforms

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

在此处输入图片说明

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

在此处输入图片说明

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

在此处输入图片说明

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

GridView.DataSource = null;
ListOfItems.Clear();
Populate(ListOfItems);
GridView.DataSource = ListOfItems
Run Code Online (Sandbox Code Playgroud)

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

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

Rez*_*aei 5

您应该创建并添加自己列,设置AutoGenerateColumnsfalse防止产生不必要的列。

this.dataGridView1.AutoGenerateColumns = false;
Run Code Online (Sandbox Code Playgroud)

如果您使用 windows 窗体设计器来执行数据绑定和创建列,您将受益于标准生成的代码。但是,如果您想自己生成该代码,则应该注意代码的多个方面。

例如,当您使用绑定源时,将网格的数据源设置为该绑定源,设计器将查看绑定源公开的列,并在设计时将这些列添加到您的网格中,并将该行代码添加到禁用自动生成列。