zoukankan      html  css  js  c++  java
  • DataView.RowFilter筛选DataTable中的数据

     


    //定义一个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的那个原表(没有过滤之前的那个表)。

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

    --------------------------------------------------------------------------------------------------------------------------

    若要形成 RowFilter 值,请指定列的名称,后跟一个运算符和一个要筛选的值。 该值必须用引号括起来。 例如:

    "LastName = 'Smith'"

    若要只返回那些具有 null 值的列,请使用以下表达式:

    "Isnull(Col1,'Null Column') = 'Null Column'"

    下面的示例创建 DataView 并设置它的 RowFilter 属性。

    private void MakeDataView()  
    {
    DataView view = new DataView();
    view.Table = DataSet1.Tables["Suppliers"];
    view.AllowDelete = true;
    view.AllowEdit = true;
    view.AllowNew = true;
    view.RowFilter = "City = 'Berlin'";
    view.RowStateFilter = DataViewRowState.ModifiedCurrent;
    view.Sort = "CompanyName DESC";
    // Simple-bind to a TextBox control
    Text1.DataBindings.Add("Text", view, "CompanyName");
    }
  • 相关阅读:
    cf1100 F. Ivan and Burgers
    cf 1033 D. Divisors
    LeetCode 17. 电话号码的字母组合
    LeetCode 491. 递增的子序列
    LeetCode 459.重复的子字符串
    LeetCode 504. 七进制数
    LeetCode 3.无重复字符的最长子串
    LeetCode 16.06. 最小差
    LeetCode 77. 组合
    LeetCode 611. 有效三角形个数
  • 原文地址:https://www.cnblogs.com/sg1991/p/4159076.html
Copyright © 2011-2022 走看看