现在sort 后排序的是当前页,不是所有查询出来的数据。如果改成adapter.Fill(ds, "call");是所有的全排了,可是时间却长了,数据大了话,影响速度,不太好,有什么好的简单方法吗?
adapter.Fill(ds, pager.PageSize * (pager.CurrentPageIndex - 1), pager.PageSize, "call");
//增加列字段
ds.Tables["call"].Columns.Add(new DataColumn("在线天数", typeof(int)));//在线天数
DataView dv = ds.Tables[0].DefaultView;
dv.Sort = "在线天数 desc";
DataGrid1.DataSource = dv;
for (int i = 0; i < ds.Tables["call"].Rows.Count; i++)
{//计算在线天数值}
DataGrid1.DataBind();
adapter.Fill(ds, pager.PageSize * (pager.CurrentPageIndex - 1), pager.PageSize, "call");
//增加列字段
ds.Tables["call"].Columns.Add(new DataColumn("在线天数", typeof(int)));//在线天数
DataView dv = ds.Tables[0].DefaultView;
dv.Sort = "在线天数 desc";
DataGrid1.DataSource = dv;
for (int i = 0; i < ds.Tables["call"].Rows.Count; i++)
{//计算在线天数值}
DataGrid1.DataBind();
你这句话取出的数据就只是当前页的数据,又不是所有数据,所以不管你怎么排,它总是当前页面。//增加列字段 ds.Tables["call"].Columns.Add(new DataColumn("在线天数", typeof(int)));//在线天数 DataView dv = ds.Tables[0].DefaultView; dv.Sort = "在线天数 desc"; DataGrid1.DataSource = dv;这个数据取出来后,你就给数据表增加了一个列,你连列的值都没有给,你就立马给排序了,数据库里面int类型如果不给值,默认是0,然而你却按"在线天数"排序,都是0如何排,跟没排是一样。在排序前应该把列的值给赋上。。