当我打开我的表单时,我将一堆行添加到绑定到DataGridView的DataSet。后来,当我枚举DataGridView中的行时,我希望能够访问用于填充DataSet但未存储在DataSet中的一些数据。如何将元数据分配给DataSet/DataGridView对中的一行?
事情是这样的:
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的行的最佳方式是什么?
由于我已经有了一个DataSet绑定到视图,我想我宁愿坚持。另一个问题是,我不确定在技术上如何访问带有DataSet的'Tag'(即我的示例中的GetDataGridViewRow()实际上做了什么?)。我需要使用刚添加的项目在DGV上进行查找,还是有更简单的方法? – ladenedge 2012-07-16 19:35:48
对不起,设法忽略了这部分问题,认为你已经解决了这个问题。是的,你需要做这样的查找 - 这可能最终会变得缓慢而脆弱,所以我建议用更多的自定义对象路由。你从GetData()返回的类型是什么? – 2012-07-16 19:57:40
这只是一个自定义的POCO。我同意lookup似乎kludgey,所以我会给'BindingList'一枪。 –
ladenedge
2012-07-16 20:04:10