在网上找了一个在后台重新对DataTable排序的方法(之所以不在数据库是因为我生成的是报表,写了存储过程用的表变量,order by也要用变量,死活拼不起来,sql能力没过关,动态sql也试了)
sql的网址:sql将查询的结果集一次性插入到表变量中
网址:DataTable中使用Order By排序与Where过滤
/// <summary> /// DataTable中使用Order By排序与Where过滤 /// </summary> private void Bind() { //这里构造一个数据源 DataTable dt = new DataTable(); dt.Columns.Add("ID", typeof(System.String)); dt.Columns.Add("uName", typeof(System.String)); dt.Columns.Add("uDate", typeof(System.DateTime)); for (int i = 0; i < 10; i++) { DataRow dr = dt.NewRow(); dr["ID"] = i.ToString(); dr["uName"] = "name" + i; dt.Rows.Add(dr); } dt.DefaultView.Sort = "ID asc";//相当于Order By dt.DefaultView.RowFilter = "ID>5";//相当于Where GridView1.DataSource = dt; GridView1.DataBind(); }
后台调试了一下发现dt的排序没变,这时需要加一句dt = dt.DefaultView.ToTable();