0

我在一种形式中有两个数据网格视图。第一个,datagridview1有列和数据:

name   IC              EMAIL             TELEPHONE  
------------------------------------------------------
rOO    898989096677    AB@YAHOO.COM      018-9097878

datagridview2

name   IC              EMAIL           TELEPHONE      ID 
-----------------------------------------------------------
rOO    898989096677    AB@YAHOO.COM    018-9097878    8787

我想就如何比较两个 datagridviews 寻求帮助,如图所示,我想比较一个 datagridview 和另一个 datagridview 的四列,看看是否有任何结果匹配。例如,roo名称是否与另一个 datagridview 匹配,我希望将 id (8787) 中的值发送到另一个 datagridview。

4

3 回答 3

1

有一个非常简单的解决方案可以比较两个 datagridview 并在第三个中显示它们的结果。

        for (int i = 0; i < dtView1.Rows.Count; i++)
        {
            for (int j = 1; j < dtView1.Columns.Count; j++)
            {

                if ((dtView1.Rows[i][j]) == (dtView2.Rows[i][j]))
                {
                   // here you can add your own logic
                }
                else
                {
              // here you can add your own logic
            }
        }

|

于 2015-03-17T09:32:43.800 回答
0

假设您使用包含示例中的这 4 个属性的相同对象填充两个数据网格。如果在第二个数据网格中有匹配的对象,则必须根据您的过滤器检查第一个数据网格中的选定行。使用 Linq。如果是这样,则将所选项目中的数据从第一个数据网格复制到秒的匹配元素中。我担心您需要手动完成所有这些步骤,因为没有可以比较两个数据网格的方法,您只需设置一些过滤器即可完成工作。你会有一些工作要做,但这并不难。祝你好运。

于 2012-10-02T10:25:03.400 回答
0

史蒂夫的答案不能正常工作,不会编译。

这是我的解决方案:

        int x = 0;
        int y = 0;
        int i = -1;
        int z = 0;
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                    i++;

                if ((dataGridView1.Rows[i].Cells[i].Value) == (dataGridView2.Rows[z].Cells[i].Value))
                {
                    x++;
                }
                else
                {
                    y++;
                }
            if (z < dataGridView2.Rows.Count)
            {
                z++;
            }
            if(z == dataGridView2.Rows.Count)
            {
                z--; //subtract 1 from the total count because the datagrid is 0 index based.
            }

     MessageBox.Show("Matched: " + x.ToString() + "\r\n" + "Not Matched: " + y.ToString());

数据网格上的 foreach 循环将循环遍历每一行,然后您可以选择一个单元格甚至单元格进行比较。这段代码有点长,我相信它可以被简化,但它确实可以完成工作。

目前,这将检查 datagrid 2 中的每一行是否与 datagrid 2 中的匹配,仅在单个列上。

记住数据网格的导入是基于 0 索引的。数据网格的 Count 属性给出了一个基于 [1] 索引的计数,因此我们需要减去数据网格 2 上的最后一次迭代。

于 2017-01-27T18:26:42.690 回答