注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天涯倦客的博客

祝福你朋友永远快乐!

 
 
 

日志

 
 

DataView.RowFilter 注意事项  

2012-05-08 12:01:11|  分类: asp.net |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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

为了优化语句,减少复杂查询来加快查询速度,我们需要使用DataView的属性RowFilter,下面简单介绍下这个 RowFilter

<%

//定义一个DataView ,得到一个全部职员的视图
DataView dataView1 = DbHelperSQL.QueryDataView(sql);

//过滤得到一个只显示男职员的视图
dataView1.RowFilter = " sex='男' ";

//放弃过滤,现在仍然能够得到一个全部职员的视图
dataView1.RowFilter = null;

//现在过滤得到一个只显示女职员的视图
dataView1.RowFilter = " sex='女' ";

//获取性别字段为空的职员
dataView1.RowFilter = " sex is null ";
//或者
dataView1.RowFilter = " Isnull( sex, 'Null Column') = 'Null Column' ";

//获取时间为空(NULL)和非空的视图
dataView1.RowFilter = " AddTime is null ";//空
dataView1.RowFilter = " AddTime is not null ";// 非空
//或者这里也可以先用Convert将日期时间(DateTime)字段转为字符串,然后做空值比较
dataView1.RowFilter = " Isnull( Convert(AddTime, 'System.String'),'Null Column') = 'Null Column' "; //空
dataView1.RowFilter = " not ( Isnull( Convert(AddTime, 'System.String'),'Null Column') = 'Null Column' ) "; // 非空
%>

 

DataTable dt = DataView.ToTable();正确的。

DataTable dt = DataView.Table; 获取的是原来构造DataView的那个原表(没有过滤之前的那个表)。

 

 

private void MyTest()
        {
            //打开数据库 con.Open();
            SqlConnection con = new SqlConnection();
            //SQL语句
            string sqlString = "select id,name,station,level,dept from verify";
            //从数据库中提取数据
            SqlDataAdapter da = new SqlDataAdapter(sqlString, con);
            //创建和声明记录集对象
            DataSet ds = new DataSet();
            //将数据库中提取出的数据加载到记录集
            da.Fill(ds, "verify");
            //关闭数据库
            con.Close();
            //从记录集中获取表对象
            DataTable dt = ds.Tables["verify"];
            //设定要过滤的的条件字符串
            string filterExpression = "dept='信息组'";
            //设置要排序的字段和排序方式字符串
            string sortExpression = "name DESC";
            //行状态过滤设置为原先的行
            DataViewRowState rowStateFilter = DataViewRowState.OriginalRows;
            //DataView dv=new DataView(dt,filterExpression,sortExpression,rowStateFilter);
            //创建DataView对象并向其构造函数传递参数
            //在生成DataView后分别设置Table、RowFilter、Sort、RowStateFilter属性
            //下面是分步设置
            //创建DataView对象
            DataView dv = new DataView();
            //获取数据
            dv.Table = dt;
            //设置过滤属性
            dv.RowFilter = filterExpression;
            //设置排序属性
            dv.Sort = sortExpression;
            //执行过滤 状态
            dv.RowStateFilter = rowStateFilter;
            //执行过滤操作。得到过滤后的结果。
            DataTable newTable = dv.ToTable();
            //循环取出过滤后的数据在页面上输出
            foreach (DataRow drv in newTable.Rows)
            {    
            }
        }
  评论这张
 
阅读(937)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017