日期:2014-05-18  浏览次数:21016 次

textbox如何直接模糊查询datagridview里当前已有的数据,而不跑到数据库去查找
 
  textbox如何直接模糊查询datagridview里当前已有的数据,而不跑到数据库去查找?

就是我想textbox模糊查询datagridview里当前的数据,而不是用存储过程到数据库去获取再填充datagridview,这样速度就快很多了。而且,因为是当前已有的数据,当我模糊查询了textbox1后显示满足条件的数据,然后我再textbox2模糊查询——是从当前的数据里再找的(模糊查询了textbox1后显示满足条件的数据),相当于多条件查询!


谢谢!


------解决方案--------------------

for(int i=0;i<dataGridView1.Rows.Count;i++) 

if (dataGridView1.Rows[i].Cells[0].Value.ToString().Equals(textBox1.Text)) 

//找到匹配行 



------解决方案--------------------
for(int i=0;i <dataGridView1.Rows.Count;i++) 

if (dataGridView1.Rows[i].Cells[0].Value.ToString().IndexOf(textBox1.Text)!=-1) 
{
//条件成立时表示单元格数据源符合文本框中数据

 } 

------解决方案--------------------
探讨
2楼其实和1楼的是一样的。
我还要,怎么样只显示满足条件的数据?

------解决方案--------------------
把绑定数据源缓存起来,然后在缓存的数据源中找,不是更好吗
------解决方案--------------------
建议使用Contains()方法,实现类似模糊查询。 
C# code

for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                if (!dataGridView1.Rows[i].Cells[0].Value.ToString().Contains(textBox1.Text))
                {
                    //找到不匹配行 ,隐藏掉
                    dataGridView1.Rows[i].Visible = false;  
                }
            }

------解决方案--------------------
探讨
把绑定数据源缓存起来,然后在缓存的数据源中找,不是更好吗

------解决方案--------------------
探讨
把绑定数据源缓存起来,然后在缓存的数据源中找,不是更好吗

------解决方案--------------------
缓存到DataSet中,使用DataView的过滤功能就可以实现了吧!
------解决方案--------------------

建议:

1.你在首次绑定datagridview显示数据时,肯定有一数据源,把它设置成本类全局变量,比如是DataTable Dt

2.给你的textbox添加change事件

3.待你在textbox输入模糊查询条件时 如 Name 包含'吴'字,用Dt.Select("Name like %'吴'%", "Id"),按Id排序,重新组成新的数据源,绑定到datagridview中;

以上三步足可以满足你的需求,不需重新访问数据库后台。
祝你好运!
------解决方案--------------------
挺好的( ⊙o⊙ )哇