1

当我打开我的表单时,我将一堆行添加到绑定到 DataGridView 的 DataSet 中。稍后,当我枚举 DataGridView 中的行时,我希望能够访问一些用于填充 DataSet 但未正确存储在 DataSet 中的数据。

像这样的东西:

public void OnStartup()
{
  foreach (var data in GetData())
  {
    var row = MyDataSet.MyTable.AddRow(data.Value);

    // here's the part where I'm not sure what to do.. ideally:
    row.GetDataGridViewRow().Tag = data.Metadata;
  }
}

public void LaterOn()
{
  foreach (var row in MyDataGridView.GetSelected())
  {
     var metadata = (Metadata)row.Tag;  // or something
     ...
  }
}

将一些元数据附加到 DataSet 或 DataGridView 行的最佳方法是什么?

4

1 回答 1

1

我会说这是没有单一“正确”方法的情况之一,只是根据具体情况选择一种方法。

使用这样的DataGridView Tag属性没有任何问题。事实上,这就是它的目的,如 MSDN 上所述:

Tag 属性可以存储您想要与波段关联的任何对象。此属性通常用于存储标识信息,例如字符串名称、唯一标识符(例如 Guid)或数据库中乐队数据的索引。


我会考虑的一种替代方法是使用BindingList<T>带有自定义支持对象的DataSourcea 而不是 aDataSet并将元数据存储在支持对象中。然后,您可以使用DataGridViewRow'DataBoundItem属性访问每个对象。

我稍微倾向于这种方式,因为它使数据和 UI 更加分离,这意味着即使您只有支持对象,您也可以获取元数据,但我怀疑在性能或内存方面是否存在任何具体差异用法。

于 2012-07-16T17:27:49.143 回答