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 }
都可以用于过滤,用于排序,都是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 }
相关链接: