c# Datagridview控件实现指定字段查找功能【未解决】

当一个Datagridview控件中数据特别多时(多到离谱),我们无法去用肉眼去识别我们需要删除或者修改的数据,那么,就需要找苦逼的程序员来实现这个功能了。
这里我将以一个产品BOM清单为例:c# Datagridview控件实现指定字段查找功能【未解决】_第1张图片

在这个产品BOM清单中,查询条件有三个,分别是:货品名称、单据编号、BOM单号.
要实现的效果:当点击查找按钮后,仅仅保留符合查找信息的数据,显示在Datagridview控件中。要仅仅查找的话,并没有什么很高的难度,而难就难在保存到数据库这块,如果还用之前的保存数据库方法,那么数据库的信息将会仅仅剩下查找到的数据,其他的都将被清空。
因此,我就想到,是否可以先隐藏掉Datagridview中的行数据。
在C#中隐藏这个控件中的行是非常简单的,仅仅用一句代码即可:DataGridView1.Rows[0].Visible = false; 但是问题又来了,那该怎么知道要隐藏的行数呢?

想这样的处理数据,首先想到的肯定就是用for循环,i递增了。我也是这么想的。i是行数,然后用GridView1.Rows.Count 来获取总行数,再将查找到的信息用bool类型标记一下,等下,说到这,我又有点懵了……

问了下朋友,朋友说,可以专门设一列复选框,来进行判断,只需要隐藏那一列就好了。

确实是个不错的主意,但是我不确定这会使我的保存功能出错,但只能试一下了。
代码:

for (int i = 0; i <= this.dataGridView1.Rows.Count; ++i)
            {
                if((string)dataGridView1.Rows[i].Cells["Column6"].Value == textBox8 .Text)
                {
                    dataGridView1.Rows[i].Cells["Column25"].Value = true;
                }

            }

                for (int i = 0; i <= this.dataGridView1.Rows.Count; i++)
            {
                if ((bool)dataGridView1.Rows[i].Cells["Column25"].Value == false)
                {
                    dataGridView1.Rows[i].Visible = false;
                }
            }

但是这个代码还是有点小问题,提示超出索引,现在已经23点半了,实在很困,先睡了,明天解决这个问题。。。

你可能感兴趣的:(c#)