“已更改”,用于在另一个 DataGridView 存储上一个值中查找数据

本文关键字:上一个 存储 DataGridView 数据 查找 另一个 已更改 用于 | 更新日期: 2023-09-27 18:32:07

Using MS Visual Studio and C#.net 4.0.

因此,刚刚完成了我的程序的另一部分,该部分检查重复项,最终"非常感谢所有帮助"。 向我的老板展示了谁喜欢它,但随后问"如果他要选择显示带有重复值的部件号的数据网格视图的结果,那么是否可以突出显示等于所选结果的主数据网格视图"。

现在首先我明白他的意思,但措辞相当困难,因此寻找一些例子来让我开始是非常困难的。

现在,虽然我没有任何代码,但我可以显示我当前拥有的代码。

我做的第一件事是在数据网格上确定一个事件处理程序,它可以检测选择了哪一行,我将使用"selectionchanged"。

更新:: 好的,我想告诉你我重用我的代码是什么意思。请注意,代码非常相似,但只是一个起点,我可能会将以前的方法与新方法合并。

private void MyErrorGrid_SelectionChanged(object sender, EventArgs e)
    {
        string getPartSelected;
        getPartSelected = MyErrorGrid.CurrentCell.Value.ToString();

        foreach (DataGridViewRow row in ParetoGrid.Rows)
        {
            var cellValue = row.Cells["Keycode"].Value;
            if (cellValue != null && cellValue.ToString() == getPartSelected)
            {
                ParetoGrid.Rows[row.Index].DefaultCellStyle.BackColor = Color.Red;
            }
        }
    }

如您所见,这有效,但存在一些问题。 它突出显示但不突出显示,所以我认为我需要存储以前的选择?(不确定这是最好的方法)。

还需要添加导航,因为突出显示对用户来说不够好。目前我添加了 selected = true,但当选择更改时,我需要使用以前的值。

“已更改”,用于在另一个 DataGridView 存储上一个值中查找数据

好吧,这感觉就像我在作弊,但这是我为解决问题所做的。

private void MyErrorGrid_SelectionChanged(object sender, EventArgs e)
    {
        string getPartSelected;
        getPartSelected = MyErrorGrid.CurrentCell.Value.ToString();
        foreach(DataGridViewRow allrow in ParetoGrid.Rows)
        {
            ParetoGrid.Rows[allrow.Index].DefaultCellStyle.BackColor = Color.Empty;
            ParetoGrid.Rows[allrow.Index].Selected = false;
        }
        //might need a do while
        foreach (DataGridViewRow row in ParetoGrid.Rows)
        {
            var cellValue = row.Cells["Keycode"].Value;
            if (cellValue != null && cellValue.ToString() == getPartSelected)
            {
                ParetoGrid.Rows[row.Index].DefaultCellStyle.BackColor = Color.Red;
                ParetoGrid.Rows[row.Index].Selected = true;

            }
        }
    }

如您所见,它基本上在输入下一个更改之前清除了所有更改,因此它可以工作,但不使用以前的值。如果有人有更好的解决方案,请随时回答

唯一的问题是当有很多行时,尽管它选择并突出显示它不会滚动 datagridview 是否有类似的方法来执行此操作?