先用一个 datatable 把 dataset进行了 .copy
然后手工往datatable中增加了1列,这2列值为原先列中某2列的差 在
GridView1_Sorting 中protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
        DataView newds = new DataView((DataTable)GridView1.DataSource);
        //由于是代码手工生成,每次页面刷新时执行page_unload以后就会丢失,所以用ViewState加以保存状态
        if (ViewState["action"] == null)
        {
            newds.Sort = e.SortExpression + " desc";
            ViewState["action"] = e.SortDirection;
        }
        else
        {
            if ((SortDirection)ViewState["action"] == SortDirection.Ascending)
            {
                newds.Sort = e.SortExpression + " asc";
                ViewState["action"] = SortDirection.Descending;
            }
            else
            {
                newds.Sort = e.SortExpression + " desc";
                ViewState["action"] = SortDirection.Ascending;
            }
        }
        GridView1.DataSource = newds;
        GridView1.DataBind();
    }原先 datatable中的都可以正常排序,但是自己增加的那一列点击以后虽然也有反应,但并不是顺序或者倒序排列,而是无序。请教可能的原因。

解决方案 »

  1.   

    就 gridview 的 AllowSorting 起用了,没有设置过排序字段,请问如何设置,这一列是在代码里手工加上的。谢谢
      

  2.   

    加列时候
    给e.SortExpression 指定列名
      

  3.   

    你给datatable加了一列
    为了在画面上显示,是不是也在gridview里面也加了一列那
    或者grid上面本来就是三列
    这样的话,你要给第三列指定SortExpression属性
      

  4.   

         
                BoundField bf = new BoundField();
                bf.DataField = c.ColumnName;
                bf.HeaderText = c.ColumnName;
                bf.SortExpression = "CCC";            
                GridView1.Columns.Add(bf);