现在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();

解决方案 »

  1.   

    一般分页都是从数据库查询m-n条数据给datatable
      

  2.   

    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;这个数据取出来后,你就给数据表增加了一个列,你连列的值都没有给,你就立马给排序了,数据库里面int类型如果不给值,默认是0,然而你却按"在线天数"排序,都是0如何排,跟没排是一样。在排序前应该把列的值给赋上。。