【发布时间】:2018-03-20 02:51:36
【问题描述】:
My 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 个新行,而不是重新绑定网格中存在的数千个。
有人可以帮忙吗?
【问题讨论】:
-
抱歉,我没有提到 - 它是一个 Windows 窗体应用程序。我现在已将其添加到我的问题中。
-
DataBinding 101:使用
BindingList而不是List -
假设我正在使用匿名类型的 BindingList。我仍然必须能够从我的基类访问它。如果我只能访问作为对象的 DataSource,如何向其中添加项目。?我需要转换它,但我必须对 BindingList
进行转换
标签: c# winforms datagrid datasource anonymous-types