C# DataView数据筛选与排序

   一、 直接在已有数据中筛选;不必重新检索数据

  (1)查询两张表的数据

 

   /// <summary>
        /// 加载所有的数据
        /// </summary>
        private void FillDataStudent()
        {
            //sql语句
            sql = new StringBuilder();
            //如果是2张表的数据,某一个字段不能写具体的表名.字段名;直接写字段名
            sql.AppendLine("SELECT  StudentNo,StudentName,Sex,GradeName,Phone FROM dbo.Student ,dbo.Grade WHERE dbo.Grade.GradeId = dbo.Student.GradeId");

            //适配器对象
            da = new SqlDataAdapter(sql.ToString(), DBHelper.conn);

            //填充数据
            da.Fill(ds);

            //绑定数据到控件
            dgvStudent.DataSource = ds.Tables[0];

        }
  (2)在原来的基础上根据条件查询年级名称的学生 或是根据年级名称与性别查询

   

 /// <summary>
        /// 树的事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tvStudent_AfterSelect(object sender, TreeViewEventArgs e)
        {

            //创建数据视图对象
            DataView dv = new DataView(ds.Tables[0]);

            //声明字符串变量
            string rowFilter=string.Empty;

            //获得当前节点的层次
            int index = tvStudent.SelectedNode.Level;

             //(1)使用 RowFilter 属性
             //筛选的条件  类似查询语句中 WHERE 后面部分
            if (index == 1)  //GradeName='S1'
            {
                rowFilter = string.Format("GradeName='{0}'",tvStudent.SelectedNode.Text);

            }
            else if (index == 2)  //GradeName='S1' AND Sex='女'
            {
                rowFilter = string.Format("GradeName='{0}' and sex='{1}'", tvStudent.SelectedNode.Parent.Text, tvStudent.SelectedNode.Text);

            }


            //过滤
            dv.RowFilter = rowFilter;


            //重新绑定数据 ;
            dgvStudent.DataSource = dv;




        }
  (3)在原来的基础上根据条件查询学生名称的学生

 的    

/// <summary>
        /// 文本按下回车键事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void txtName_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode==Keys.Enter)
            {
               
            //1创建数据视图对象
           // DataView dv = new DataView(ds.Tables[0]);

           // 为减少实例化DataView对象的步骤,也可使用DataTable的DefaultView属性得到DataView 
              DataView dv = ds.Tables[0].DefaultView;


            //2条件筛选
            dv.RowFilter = string.Format("StudentName like '%{0}%'",this.txtName.Text.Trim());


             //使用 Sort 属性排序的条件  类似查询语句中 ORDER BY 后面部分
            dv.Sort = "studentno desc";


            //3重新绑定数据 ;
            dgvStudent.DataSource = dv;

            }

        }




你可能感兴趣的:(C# DataView数据筛选与排序)