目前在数据绑定数据表中引用行数据时存在问题。 绑定配置如下: DataGridView => BindingSource =>数据表
datagridview允许多行选择和排序。
我有一个按钮,它根据所选的datagridview行启动一些方法:
ItemsBindingSource.DataSource = dataSets.Tables["ItemList"];
foreach(DataGridViewRow SelectedItem in datagridview1.SelectedRows)
{
string SelectedItemName = SelectedItem.Cells[1].Value.ToString();
int rowPosition = ItemsBindingSource.Find("Name",SelectedItemName);
RunSomeMethod(dataSets.Tables["ItemList"].Rows[RowPosition]);
}
void RunSomeMethod(DataRow row)
{
// run some code and modify the values of particular cells within the
// row and save the changes
}
我的问题是,当我对Datagridview进行排序时,所选项的rowPosition不再匹配BindingSource的基础数据源的行位置。我需要一些关于获取bindingsource和它的基础数据源以进行同步的建议,或者可能是完成此任务的更好方法。感谢任何建议。
*编辑
我已经意识到我可以根据主键值引用该行,例如:
foreach(DataGridViewRow selectedItem in datagridview1.SelectedRows)
{
int selectedItemPrimaryKey = selectedItem.Cells[0].value;
RunSomeMethod(dataSets.Tables["ItemList"].Rows.Find(selectedItemPrimaryKey));
}
不如我所希望的那么漂亮,但似乎正在做这项工作。仍然接受其他建议。我对数据绑定很新。
答案 0 :(得分:1)
您可以使用另一个名为“RowID”的列,该列具有所有行的唯一编号。然后使用此列而不是行索引查找行。 如果你帮助我,请告诉我,并随时寻求进一步的帮助。