Apply sorting in gridview when the header is literal control
How to apply basic sorting in the gridview? Below is the gridview code.
<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>
As you can see the header template contains a literal. So how to apply sorting? will the addition of literal make a difference in applying sorting?
Use sort expression with template field and use the following code for sorting. ITs working perfectly fine for me.
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();
}
}
}
}
精彩评论