首页 > 解决方案 > C#如何在不同的datagridview中选择两个同名的项目?

问题描述

在此处输入图像描述我有 2 个不同的数据网格,第一个 DG1 是我的项目列表,DG2 是已购买项目的项目队列。我的目标是每当我单击 DG2 中的一个项目时,也会选择具有相同名称或 ID 的 DG1。我想忽略索引,因为我的项目队列与项目列表顺序不同。

private void dgItems_CellClick(object sender, DataGridViewCellEventArgs e)
    {

        int rowindex = dgItems.Rows[e.RowIndex].Index;
        int columnindex = dgItems.Columns[e.ColumnIndex].Index;

        dgItemList.Rows[rowindex].Cells[columnindex].Selected = true;
    }

标签: c#datagridview

解决方案


您需要Value从两个 datagridviews 单元格中访问属性,例如

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    int rowindex = dataGridView1.Rows[e.RowIndex].Index;
    int columnindex = dataGridView1.Columns[e.ColumnIndex].Index;

    foreach (DataGridViewRow row in dataGridView2.Rows)
        row.Selected = false;

    var cellValue1 = dataGridView1.Rows[rowindex].Cells[columnindex].Value;

    foreach (DataGridViewRow row in dataGridView2.Rows)
    {
        var cellValue2 = row.Cells[columnindex].Value;

        if (cellValue1 == cellValue2)
            row.Selected = true;
        else
            row.Selected = false;
    }
}

dataGridView1是你的 dgItemsdataGridView2是你的dgItemList

编辑:

如果您的两个 datagridviews 列都在不同的索引上,那么您必须提供列索引以匹配值。

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    int rowindex = dataGridView1.Rows[e.RowIndex].Index;
    int columnindex = dataGridView1.Columns[1].Index;

    foreach (DataGridViewRow row in dataGridView2.Rows)
        row.Selected = false;

    var cellValue1 = dataGridView1.Rows[rowindex].Cells[1].Value;  // 1 <= index of Name column in dgItems

    foreach (DataGridViewRow row in dataGridView2.Rows)
    {
        var cellValue2 = row.Cells[0].Value; // 0 <= index of Name column in dgItemList

        if (cellValue1 == cellValue2)
            row.Selected = true;
        else
            row.Selected = false;
    }
}

输出:

在此处输入图像描述


推荐阅读