3

当前在数据绑定数据表中引用行数据时遇到问题。绑定配置如下: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));
}

没有我希望的那么漂亮,但似乎正在做这项工作。仍然对其他建议持开放态度。我对数据绑定很陌生。

4

1 回答 1

1

您可以使用另一列名为“RowID”的列,该列对所有行都有唯一编号。然后找到该列而不是行索引的行。如果您对此有所帮助,请告诉我,并随时寻求进一步的帮助。

于 2013-05-27T05:38:39.223 回答