将项添加到Grid的DataSource而不重新绑定

时间:2018-03-20 02:51:36

标签: c# winforms datagrid datasource anonymous-types

我的DataGrid(Windows窗体应用程序)绑定到匿名类型项的列表。因为它是一个基类,所以我不知道匿名类型到网格的确切含义。

我想访问该列表并添加一个新项目。 我可以使用:ListBindingHelper.GetListItemType

提取列表项类型

我可以使用:Activator.CreateInstance

创建一个新的完全相同的类型项

但我找不到从数据源访问List<anonymous>的方法,并将创建的项目添加到列表中。

我当然可以这样做:

var dsList = ((IEnumerable)this.TheGrid.DataSource).OfType<object>().ToList();
dsList.Add(nItem0);
this.TheGrid.DataSource = dsList;

但它导致重新绑定,我想避免它。只想添加1个新行,而不是重新绑定网格中存在的数千个。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

由于Plutonix建议我将绑定更改为BindingSource,现在我可以将DataSource对象转换为BindingSource。

var dsList = this.TheGrid.DataSource as BindingSource;

并添加新项目

dsList.Add(nItem0);

不需要完全重新绑定。它解决了我的问题。

感谢Plutonix提出了一个好建议。