使用模板字段和标题模板进行GridView排序

时间:2011-04-20 13:58:49

标签: sorting gridview templatefield

我正在使用GridView,并且标题单元格中有一个下拉列表用于过滤。

<gm:GridView ID="routePlanGridView" runat="server" AutoGenerateColumns="False"
    AllowPaging="true" PageSize="20" GridLines="Both" ShowFooter="true" CssClass="grid"
    DataKeyNames="RoutePlanId" OnSorting="routePlanGridView_Sorting"
    AllowSorting="true" OnPageIndexChanging="routePlanGridView_PageIndexChanging"
    OnSelectedIndexChanging="routePlanGridView_SelectedIndexChanging"
    OnRowDataBound="routePlanGridView_RowDataBound"
    OnRowEditing="routePlanGridView_RowEditing"
    OnRowUpdating="routePlanGridView_RowUpdating">
    <HeaderStyle CssClass="gridHeaderFooter" />
    <FooterStyle CssClass="gridHeaderFooter" />
    <RowStyle CssClass="gridRow" />
    <AlternatingRowStyle CssClass="gridRowAlternate" />
    <Columns>
        <asp:TemplateField SortExpression="SPName">
            <HeaderTemplate>
                SP Name<br />
                <asp:DropDownList ID="spNameFilterDDL" runat="server" CssClass="gridControl" AutoPostBack="true" DataSourceID="SPNameSDS" DataTextField="SPName" OnDataBound="filterDDL_DataBound" OnSelectedIndexChanged="spNameFilterDDL_SelectedIndexChanged" />
            </HeaderTemplate>
            <ItemTemplate>
                <asp:Label ID="spNameLabel" runat="server" Text='<%# Bind("SPName") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <...15 more...>
    </Columns>
</gm:GridView>

并且有相关的事件处理程序用于排序和分页 现在的问题是如果我在链接按钮中放入“SP Name”文本,单击链接时页面崩溃,否则不会生成链接进行排序。 如果我删除标题模板字段(所有这些)并放置一个带有TemplateField的HeaderText属性的文本,它将按预期工作。有没有办法将它们组合在一起?我需要下拉列表并进行排序。

感谢。

2 个答案:

答案 0 :(得分:2)

抱歉,忘了正确插入代码 - 这里:

<asp:LinkButton runat="server" Text="SP Name" CommandName="Sort" CommandArgument="SPName" ></asp:LinkButton> 

答案 1 :(得分:-1)

您需要为标题文字使用链接按钮。因此,代替“SP名称”,使用。如果您正在处理排序,它应该可以工作。