如何将元数据分配给DataSet / DataGridView对中的行?

时间:2012-07-16 17:16:09

标签: .net datagridview dataset

当我打开表单时,我将一堆行添加到绑定到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行的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

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

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

  

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


我要考虑的另一种选择是将BindingList<T>与自定义支持对象一起用作DataSource而不是DataSet,并将元数据存储在支持对象中。然后,您可以使用DataGridViewRow的{​​{1}}属性访问每个对象。

我会稍微偏爱这种方式,因为它会使数据和UI保持分离,这意味着即使只有后备对象也可以获取元数据,但我怀疑在数据方面存在任何具体差异性能或内存使用情况。