Windows窗体 - 如何获取DataGridView所填充的数据
我需要做的是在加载到dgv中之前捕获数据并更改其中一个属性。我现在已经是一个通用的方法,我用创建DataSource
我DGV:Windows窗体 - 如何获取DataGridView所填充的数据
dgv.DataSource = new SortableBindingList<T>(result.ResultEntities);
我想要做的就是得到这个数据,操纵它,我需要的方式,然后返回在dgv
中更改加载数据。
我试图通过简单地这样做是为了做到这一点:
SortableBindingList<MyType> someVar = (SortableBindingList<MyType>)dgvMydgv.DataSource;
嗯,看来这不是做到这一点的方式。
如果将像sortableBindingList这样的局部变量绑定到datagridview,那么在datagrid数据绑定成功后就无法访问它。在“DataBound()”之后数据源将为NULL - 事件触发。
FYI:
如果您绑定SqlDataSource
您的datagridview你能你绑定的数据源后,导出sortablebindinglist。
你拥有的每行中读出每列,并将其保存在一个新定义的sortablebindinglist,然后重新绑定数据源到GridView:
foreach (GridViewRow gvrMyRow in gvFields.Rows)
{
foreach (TableCell tcMyCell in gvrMyRow.Cells)
{
string sMyValue = tcMyCell.Text;
}
}
请记住:
保持参考原始填写的清单是正常的方式,你应该去实现这个目标。它更容易找到条目,操作条目等等。
我仍然不明白这和保持对实际原始列表的引用之间的区别。 – 2013-02-20 14:58:26
保持ref的原始列表是更好的方式和“正常的方式去”:)但他要求一种方式来读出现有的gridview行。 – noonecares 2013-02-20 15:00:58
令我惊讶的是,看到这种winforms心态..为什么你不只是保持一个参考'SortableBindingList'?而不是做任何UI元素的'DataSource'属性的黑客攻击? –
2013-02-20 14:28:36
因为我认为为任何目的获取网格数据并不奇怪,事实上这正是我想要做的。 – Leron 2013-02-20 14:34:52
将winforms开发人员了解[UI不是数据](http://*.com/questions/14381402/wpf-programming-methodology/14382137#14382137)? – 2013-02-20 14:43:55