对dataGridView和DataTable使用DataView进行多次查询

来源:互联网 发布:淘宝店办理营业执照 编辑:程序博客网 时间:2024/05/17 09:23

参考自:http://www.cnblogs.com/Spirithero/archive/2011/07/20/2111351.html

重点在于DataView是DateTable相关联的一个视图而已,无论你如何使用RowFilter,DataView虽然被改变,但DateTable数据不会减少,所以你不要幻想连续使用多个RowFilter 来得到叠加过滤的效果,一个DataView只支持一个RowFilter,你只能使用 not ,and 来连接多个过滤条件。

DataTable dt = DataView.ToTable(); //获取过滤结果表格DataTable dt = DataView.Table;  //获取的是原来构造DataView的那个原表(没有过滤之前的那个表)。
    但是可以通过保留上次查询过滤的结果表格,下次查询时,以保留的表格为查询对象,可以实现多次过滤查询。

控件截图:
这里写图片描述

全局变量:

    DataTable pTable;  //原始结果表格    DataTable multQueryTable;  //多次查询结果表格

主要代码:

//查询        private void btnFilter_Click(object sender, EventArgs e)        {            string strField = comBField.Text.ToString();  //查询字段            string strSymbol = comBsymbol.SelectedItem.ToString();  //查询符号            string strTarget = textFind.Text;  //查询对象            if (string.IsNullOrEmpty(strField) || string.IsNullOrEmpty(strTarget)||string.IsNullOrEmpty(strSymbol))  //判断查询语句是否满足条件            {                MessageBox.Show("查询内容不能为空!");                return;            }            DataTable sqlTable = pTable.Copy();  //原始结果表格复制给查询表格,以保留原始结果            DataView curDV;            if (checkMultQuery.Checked == true && multQueryTable !=null )  //判断是否多次查询            {                curDV = multQueryTable.DefaultView;  //获取多次查询表格的视图            }            else            {                curDV = sqlTable.DefaultView;  //获取原始表格的自定义视图            }            string strSQL;  //查询语句            if (strSymbol == "LIKE")  //模糊查询            {                strSQL = strField + " LIKE '%" + strTarget + "%'";            }            else              {                strSQL = strField + " " + strSymbol + " " + strTarget;  //条件查询            }            curDV.RowFilter = strSQL;  //筛选满足条件的行数据            dataGridView.DataSource = curDV;  //绑定查询结果到数据视图            multQueryTable = curDV.ToTable();  //获取查询过滤结果的表格        }

重置,即显示原始表格:

//重置        private void btnReset_Click(object sender, EventArgs e)        {            if (pTable!= null)  //如果原始表格非空            {                dataGridView.DataSource = pTable;  //绑定原始结果表格            }        }
原创粉丝点击