c# DataTable 中 Select 和 Clone 用法结合

C# DataTable是存放数据的一个离线数据库,将数据一下加载到内存。

DataTable.Select ()方法:

  Select();//全部查出来   
  Select(过滤条件);//根据过滤条件进行过滤,如Select("columnname1   like   '%xx%'");   
      Select(过滤条件,排序字段);//过滤,并排序,如Select("columnname1   like   '%xx%'",columnname2);
 
  DataRow[] dr = ds.Tables[table_name].Select("数据库绑定在gridview上的列名='该列你要查询的值'");
  DataRow[] dr = ds.Tables[table_name].Select("数据库绑定在gridview上的列名='该列你要查询的值'","排序字段");
 
DataTable.Clone() :克隆DataTable 的结构,包括所有DataTable 架构和约束。

下面是Select 和 Clone 用法结合,来实现在TextBox控件上实时输入过滤(查询)条件之后,能够实时的在DataGridView控件上显示符合过滤(查询)条件的项

1、在控件textBox上输入要过滤条件,触发TextChanged事件如下:

private void textBox2_TextChanged(object sender, EventArgs e)
        {
            string strData = textBox2.Text;
            string strFiler = CDBDefine.fieldName + " like '%" + strData + "%'";//其中CDBDefine.fieldName为数据库中的字段名
            FilterConditions(strFiler);
        }

2、通过查找DataTable数据中对应的字段中的值,并为新DataTable填充查找中符合的项,并使DataGridView显现符合过滤条件的数据

private void FilterConditions(string strFiler)
        {
            if (m_peopleInfoTable != null)  //m_peopleInfoTable是一个已有的DataTable的数据集
            {
                DataRow[] filerRows = null;
                if (strFiler == null || strFiler.Length == 0)//如果过滤条件为空且长度为0,则使filerRows为null
                {
                    filerRows = null;
                }
                else
                {
                    filerRows = m_peopleInfoTable.Select(strFiler);//根据过滤条件strFiler在已有的m_peopleInfoTable数据中查找符合条件的数据行存入filerRows中
                }

                DataTable tempdatatable = m_peopleInfoTable.Clone();//创建临时新表并把原来的表结构复制到新表中
                foreach (DataRow row in filerRows)//为新表填充数据
                {
                    tempdatatable.Rows.Add(row.ItemArray);
                }
                m_peopleInfodataGridView.DataSource = tempdatatable;//m_peopleInfodataGridView是一个已有的DataGridView数据控件名称
            }
        }

 

posted @ 2016-10-19 10:47  蚂蚁跳高楼  阅读(1013)  评论(0编辑  收藏  举报