2011-08-08 23 views
0

如何在gridview中應用基本排序?以下是gridview代碼。在GridView中應用排序時,標題是文字控制

<asp:TemplateField SortExpression="Sample1">    
         <HeaderTemplate SortExpression="Sample1"> 
           <asp:Literal ID="litSample1" runat="server" Text="<%$ Resources:Resource, gvColSample1 %>"></asp:Literal> 
            <asp:DropDownList ID="ddlSample1" runat="server" OnSelectedIndexChanged="SelectionChanged" AutoPostBack="true" CssClass="dropdownS" AppendDataBoundItems="true"> 
            <asp:ListItem Text=" " Value="-1"></asp:ListItem> 
            <asp:ListItem Text="ALL" Value="ALL"></asp:ListItem> 
            </asp:DropDownList> 
         </HeaderTemplate>  
          <ItemTemplate> 
           <%# Eval("RowSample1") %> 
          </ItemTemplate> 
         </asp:TemplateField> 

正如你可以看到頭文件模板包含一個文字。那麼如何應用排序?增加字面意味着在應用排序方面有所作爲?

+1

將SortExpression應用於TemplateField而不是HeaderTemplate以啓動。 –

+0

你是否正確。這是一個錯字錯誤。代碼已更新 –

回答

0

對模板字段使用排序表達式,並使用以下代碼進行排序。 IT對我來說工作得很好。

protected void gvTool_Sorting(object sender, GridViewSortEventArgs e) 
{ 
    if (ViewState["sortMode"] == null) 
    { 
     ViewState["sortMode"] = SORT_DESC; 
    } 
    if (ViewState["sortMode"] != null) 
    { 
     if (Convert.ToString(ViewState["sortMode"]).Trim().Equals(SORT_ASC)) 
     { 
      ViewState["sortMode"] = SORT_DESC; 
     } 
     else 
     { 
      ViewState["sortMode"] = SORT_ASC; 
     } 
    } 

    string sortexpr = e.SortExpression; 
    ViewState["sortexpr"] = e.SortExpression; 
    sort(); 
} 

protected void sort() 
{ 
    if (ViewState["sortexpr"] != null) 
    { 
     DataView dvTool = default(DataView); 
     DataTable dtTool = new DataTable(); 
     dtTool = (DataTable)ViewState["dtTool"]; 

     if ((dtTool != null)) 
     { 
      if (dtTool.Rows.Count > 0) 
      { 
       dvTool = dtTool.DefaultView; 
       dvTool.Sort = ViewState["sortexpr"].ToString().Trim() + " " + ViewState["sortMode"]; 
       gvTool.DataSource = dvTool; 
       gvTool.DataBind(); 
      } 
     } 
    } 
}