C# 在选择第一行后选择另外两行datagridview,与“rptId”字段相关

C# 在选择第一行后选择另外两行datagridview,与“rptId”字段相关,c#,winforms,datagridview,C#,Winforms,Datagridview,我在windows窗体中有三个DataGridView,希望能够根据rptID列值自动让另外两个DataGridView选择各自的行。 所有三个DataGridView都是不同的sql表,由rptID关联 我已经能够使用以下代码在点击事件中从所有三个dgv中提取rptID: private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { int rptId

我在windows窗体中有三个DataGridView,希望能够根据rptID列值自动让另外两个DataGridView选择各自的行。 所有三个DataGridView都是不同的sql表,由rptID关联

我已经能够使用以下代码在点击事件中从所有三个dgv中提取rptID:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            int rptIdValue1 = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[0].FormattedValue.ToString());   
        }
我的问题是,如何使用此rptID值将其与其他两个dgv进行比较,并选择相应的dgv行,即单击rptID 51,然后在其他两个dgv中自动选择相应的rptID行


我非常感谢所给予的任何帮助。我试图发布我表格的图片,但没有足够的代表点。

请看下面的示例:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        var rptIdValue1 = (int)dataGridView1.Rows[e.RowIndex].Cells[0].Value;
        foreach (DataGridViewRow r in dataGridView2.Rows)
        {
            if ((int)r.Cells[0].Value != rptIdValue1) continue;

            dataGridView2.Rows[r.Index].Selected = true;
            break;
        }
    }
您必须检查null并尝试/捕获

干杯,
Martin

Martin,我在DataGridView旁边有文本框,其中填充了每行字段中的值。发生.selected事件时,其他dgv中的选定行将发生更改,但文本框中不会填充数据。你知道这是为什么吗?是否必须将新选择的行设置为当前行?再次感谢你的帮助。马丁,我能找到答案。我现在希望它能正常工作。谢谢你的回复。代码如下:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        var rptIdValue1 = (int)dataGridView1.Rows[e.RowIndex].Cells[0].Value;

            foreach (DataGridViewRow r2 in dataGridView2.Rows)
            {
                if ((int)r2.Cells[0].Value != rptIdValue1)
                    continue;

                dataGridView2.Rows[r2.Index].Selected = true;
                dataGridView2.CurrentCell = dataGridView2.Rows[r2.Index].Cells[0];
                break;                           
            }

            foreach (DataGridViewRow r3 in dataGridView3.Rows)
            {
                int dgv3Index = (int)dataGridView3.Rows[e.RowIndex].Cells[0].RowIndex;

                if ((int)r3.Cells[0].Value != rptIdValue1) 
                    continue;

                dataGridView3.Rows[r3.Index].Selected = true;
                dataGridView3.CurrentCell = dataGridView3.Rows[r3.Index].Cells[0];
                break;                            
            }

    }