DataView和DefaultView的理解

DefaultView 的作用(对DataSet查询出的来数据进行排序)(这个老哥的太长了)

DefaultView:默认视图。datatable.DefaultView获取整个表的视图(就像sql查询出来的那样子一样,一个数据集,差不多)

SqlConnection conn = new SqlConnection("server=.;database=mydata;uid=sa;pwd=123456;");
conn.Open();
SqlDataAdapter adp = new SqlDataAdapter();
adp.SelectCommand = new SqlCommand("select * from goods",conn);
DataSet ds = new DataSet();
adp.Fill(ds, "goods"); //填充DataSet内存数扰库
Response.Write(ds.Tables[0].DefaultView.Count); //显增当前查询结果的总行数
ds.Tables[0].DefaultView.Sort = "GoodsID Desc"; //这里设定排序的字段及方式(从红字可以看出,defaultView是在table的基础上进行行为的
ds.Tables[0].DefaultView.RowFilter = "Shopid = 1"; //设定过滤条件, 得到条件潢足为”ShopID =1 的所有数据”
this.GridView1.DataSource = ds.Tables[0]; //绑定到gridview数据源
this.GridView1.DataBind();
其中如果我们需要变更查询结结果, 例如得到所有goodsID字段大于10的数据, 则只需改变上面代码中的
ds.Tables[0].DefaultView.RowFilter = "Shopid = 1";  改为  ds.Tables[0].DefaultView.RowFilter = "goodsID > 10";

DatagridTC.DataSource = dtRst;(他是一个dt)
DatagridTC.DataBind();
在工作的时候,它等效于:

DatagridTC.DataSource = ds.Tables[0].DefaultView;
DatagridTC.DataBind();

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

dataview

DataView dv = ds.Tables[0].DefaultView;

 dv.Sort = "TimeClass_Name, DateType, TCOrder";

DatagridTC.DataSource = dv;
 DatagridTC.DataBind();

因此大家在遇到需要排序或者过滤数据的时候,要多想想可否使用dataview来实现了。

dataview可以用于对你的datatable筛选,搜索,排序,编辑和导航。可以方便对databale的操作。

1 public datatable EditTable(datatable dataTable)
2 {
3   DataView dv = dataTable.DefaultView;
4   dv.RowFilter = "City='" + City + "' AND SpreadPos='" + SpreadPos + "' AND KeyWord Like '%" + Key + "%'";//可以看到rowfilter支持多条件查询和 like模糊查询,此外还支持下列聚合类型:Sum(求和)   Avg(平均)   Min(最小值)   Max(最大值)   Count(计数)StDev(统计标准偏差)     Var(统计方差)。
5   dv.Sort = "CompanyName DESC";//排序
6   dataTableRes = dv.Table;//变成table
7   return dataTableRes ;                
8 }  
View Code

都可以用于过滤,用于排序,都是dt的下一阶级

自己遇到的代码是排序:点击页眉进行排序

 1   protected void Page_Load(object sender, EventArgs e)
 2         {
 3             if (!IsPostBack)
 4             {
 5                 ViewState["SortOrder"] = "UName";
 6                 ViewState["OrderDire"] = "ASC";
 7              }
 8         }
 9 
10 
11  protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
12         {
13             string sPage = e.SortExpression;
14             if (ViewState["SortOrder"].ToString() == sPage)
15             {
16                 if (ViewState["OrderDire"].ToString() == "Desc")
17                     ViewState["OrderDire"] = "ASC";
18                 else
19                     ViewState["OrderDire"] = "Desc";
20             }
21             else
22             {
23                 ViewState["SortOrder"] = e.SortExpression;
24             }
25             bind();
26         }
27         public void bind()
28         {
29 
30             string sqlstr = "select  * from UserInfo";
31             sqlcon = new SqlConnection(sqlCon);
32             SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
33             DataSet myds = new DataSet();
34             sqlcon.Open();
35             myda.Fill(myds, "UserInfo");
36             DataView view = myds.Tables["UserInfo"].DefaultView;
37             string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];
38             view.Sort = sort;
39             GridView1.DataSource = view;
40             GridView1.DataBind();
41             sqlcon.Close();
42         }
View Code

相关链接:

DataView的用法

原文地址:https://www.cnblogs.com/ZkbFighting/p/9247606.html