Применить сортировку в gridview, когда заголовок является литеральным элементом управления - PullRequest
0 голосов
/ 08 августа 2011

Как применить базовую сортировку в виде сетки?Ниже приведен код вида сетки.

<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 Ответ

0 голосов
/ 08 августа 2011

Используйте выражение сортировки с полем шаблона и используйте следующий код для сортировки.Это прекрасно работает для меня.

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();
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...