怎么实现 GridView中的多字段排序...

解决方案 »

  1.   

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AllowSorting="true" OnSorting="GridView1_Sorting" AllowPaging="true" PageSize="10" OnPageIndexChanging="GridView1_PageIndexChanging">   
      <Columns>   
      <asp:BoundField DataField="id" HeaderText="代码" SortExpression="id"/>   
      <asp:BoundField DataField="name" HeaderText="名称" SortExpression="name"/>   
      <asp:TemplateField SortExpression="BUID" HeaderText="BUID">   
      <ItemTemplate>   
      <asp:Label ID="Label1" runat="server" Text=' <%# Bind("ID") %>' ToolTip=' <%# DataBinder.Eval(Container.DataItem, "ID") %>'> </asp:Label>   
      </ItemTemplate>   
      </asp:TemplateField>   
      </Columns>   
      </asp:GridView>   protected void Page_Load(object sender, EventArgs e)   
      {   
      if (!this.IsPostBack)   
      {   
      ViewState["SortOrder"] = "deptid";   
      ViewState["OrderDire"] = "asc";   
      BindGridView();   
      }   
      }     protected void BindGridView()   
      {   
        
      DataSet ds = new DataSet();   
          DataView dv = ds.Tables[0].DefaultView;   
      string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];   
      dv.Sort = sort;   
      this.GridView1.DataSource = dv;     this.GridView1.DataBind();     }   
      protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)   
      {   
      string vortExp = e.SortExpression;   
      if (ViewState["SortOrder"].ToString() == vortExp)   
      {   
      if ((string)ViewState["OrderDire"] == "desc")   
      {   
      ViewState["OrderDire"] = "asc";   
      }   
      else if ((string)ViewState["OrderDire"] == "asc")   
      {   
      ViewState["OrderDire"] = "desc";   
      }   
      }   
      else   
      {   
      ViewState["SortOrder"] = e.SortExpression;   
      }   
      BindGridView();     }   
      protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)   
      {   
      this.GridView1.PageIndex = e.NewPageIndex;   
      BindGridView();   
      }   
      

  2.   

    把需要排序的列的allowsort设为true即可
      

  3.   

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AllowSorting="true" OnSorting="GridView1_Sorting" AllowPaging="true" PageSize="10" OnPageIndexChanging="GridView1_PageIndexChanging">   
      <Columns>   
      <asp:BoundField DataField="id" HeaderText="代码" SortExpression="id"/>   
      <asp:BoundField DataField="name" HeaderText="名称" SortExpression="name"/>   
      <asp:TemplateField SortExpression="BUID" HeaderText="BUID">   
      <ItemTemplate>   
      <asp:Label ID="Label1" runat="server" Text=' <%# Bind("ID") %>' ToolTip=' <%# DataBinder.Eval(Container.DataItem, "ID") %>'> </asp:Label>   
      </ItemTemplate>   
      </asp:TemplateField>   
      </Columns>   
      </asp:GridView>   protected void Page_Load(object sender, EventArgs e)   
      {   
      if (!this.IsPostBack)   
      {   
      ViewState["SortOrder"] = "deptid";   
      ViewState["OrderDire"] = "asc";   
      BindGridView();   
      }   
      }     protected void BindGridView()   
      {   
        
      DataSet ds = new DataSet();   
          DataView dv = ds.Tables[0].DefaultView;   
      string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];   
      dv.Sort = sort;   
      this.GridView1.DataSource = dv;     this.GridView1.DataBind();     }   
      protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)   
      {   
      string vortExp = e.SortExpression;   
      if (ViewState["SortOrder"].ToString() == vortExp)   
      {   
      if ((string)ViewState["OrderDire"] == "desc")   
      {   
      ViewState["OrderDire"] = "asc";   
      }   
      else if ((string)ViewState["OrderDire"] == "asc")   
      {   
      ViewState["OrderDire"] = "desc";   
      }   
      }   
      else   
      {   
      ViewState["SortOrder"] = e.SortExpression;   
      }   
      BindGridView();     }   
      protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)   
      {   
      this.GridView1.PageIndex = e.NewPageIndex;   
      BindGridView();   
      }