代码之家  ›  专栏  ›  技术社区  ›  Tomasz

将项添加到网格的数据源,而无需重新绑定

  •  1
  • Tomasz  · 技术社区  · 6 年前

    我的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 回复  |  直到 6 年前
        1
  •  0
  •   Tomasz    6 年前

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

    var dsList = this.TheGrid.DataSource as BindingSource;
    

    并添加新项目

    dsList.Add(nItem0);
    

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

    非常感谢。 为了一个好的建议。