我有3個DataGridViews。使用DataGridView1和DataGridView2,您可以選擇行。 按下按鈕後,將比較DataGridView1和DataGridView2中的行,並在DataGridView3中設置具有相同值的每一行。在第三個DataGridView中選擇時,如何在2個DataGridView中選擇一行?
我想要的是當你在DataGridView3中選擇一行時,在DataGridView1和DataGridView2中選擇相同的行。
的代碼我有,而且工作原理是:
private int ShowSelected(int selectedId, Boolean sBool)
{
DataTable dt = DataGridView1.DataSource;
if(!sBool)
currentGrid = DataGridView1;
int indexCounter = 0;
foreach (DataRow dr in dt.Rows)
{
int cellIdDgv = Convert.ToInt32(dr["cellId"]);
if (selectedId == cellIdDgv)
{
if (sBool)
{
DataGridView1.Rows[indexCounter].Selected = true;
DataGridView1.FirstDisplayedCell = DataGridView1.Rows[indexCounter].Cells[0];
}
else
{
DataGridView2.Rows[indexCounter].Selected = true;
DataGridView2.FirstDisplayedCell = DataGridView2.Rows[indexCounter].Cells[0];
}
}
indexCounter++;
}
}
但我想是這樣的,這樣你就不會在整個電網必須循環:
string selection = "cellId = " + selectedId;
DataRow[] drResult = dt.Select(selection);
int rowId = drResult.RowId;
if (sBool)
{
DataGridView1.Rows[rowId].Selected = true;
DataGridView1.FirstDisplayedCell = DataGridView1.Rows[rowId].Cells[0];
}
else
{
DataGridView2.Rows[rowId].Selected = true;
DataGridView2.FirstDisplayedCell = DataGridView2.Rows[rowId].Cells[0];
}
我該如何做這項工作?
您可以使用['BindingSource.Filter'](http://msdn.microsoft.com/zh-cn/library/system.windows.forms.bindingsource.filter.aspx)。這將使您能夠過濾第三個DataGridView。該鏈接也有例子。 – MoonKnight 2012-02-09 10:54:36