当前在数据绑定数据表中引用行数据时遇到问题。绑定配置如下:DataGridView => BindingSource => DataTable
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 的基础数据源的行位置匹配。我需要一些关于获取绑定源及其要同步的底层数据源的建议,或者可能是完全完成此任务的更好方法。感谢任何建议。
*编辑
我意识到我可以根据主键值引用该行,例如:
foreach(DataGridViewRow selectedItem in datagridview1.SelectedRows)
{
int selectedItemPrimaryKey = selectedItem.Cells[0].value;
RunSomeMethod(dataSets.Tables["ItemList"].Rows.Find(selectedItemPrimaryKey));
}
没有我希望的那么漂亮,但似乎正在做这项工作。仍然对其他建议持开放态度。我对数据绑定很陌生。