本帖最后由 Jonly 于 2009-06-09 15:44:43 编辑

解决方案 »

  1.   

    如果你要点击排序,你可能要在HeaderTemplate 
    添加button,并且为这个button添加事件如果你要用Sorting事件,
    那么你要设定这个Buttion的CommandName设为系统与之相关的命令,具体查一下msdn.好像就是叫什么Sort,我现在只记得删除叫delete
    这样就直接由冒泡事件去管理了.你直接添加事件既可
      

  2.   

    谢谢1楼的,我是想用到Sorting事件,
    我加了一个  Buttion 并 CommandName 设为“Sort”, 这样可以触发GridView1_Sorting事件了;
    但 GridView1_Sorting事件里的 string sortExpression = e.SortExpression; 得不到值!
     
      

  3.   

    自定义的模板列的自己去实现,数据绑定也要自己来做。
    <HeaderTemplate>
       <asp:Button ID="Button1" CommandName="sort" CommandArgument="Name"  runat="server"/>
    </HeaderTemplate>CommandArgument 就是排序的SortExpression
      

  4.   

    嗯.呵呵,你这个肯定不能用它的方法了.
    不过你可以试着去了解一下它的原理
    .
    如果你要重写你工作量估计够大,光按钮就几种类型 ,什么linkbutton,button之类的既然你是自定义,个人建议你还是自定义一个事件毕竟你这个是一个伪Sort,系统不会自动为你的方法去构造事件
    你再用一个ViewState把你的存起来好了代码如下面就差不多了protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) 

            int asc = 0;
            if (ViewState["my_sort"] != null)
            {
                asc = (int)ViewState["my_sort"];
            }
            //取反
            asc = asc == 0 ? 1 : 0;
            //排序
            asc == 0 ? SortGridView(sortExpression, "DESC") : SortGridView(sortExpression, "ASC");
           ViewState["my_sort"] = asc;
    }
      

  5.   

    另外,你应该为每一个列定义一个不同的ViewState的key值....
      

  6.   

    4楼说的不错,可以试一下commandargument
      

  7.   

    谢谢 zyug多列同时排序的话可能就要  不同的ViewState的key值了