SortExpression в ASP.NET GridView не работает с <HeaderTemplate> - PullRequest
1 голос
/ 07 марта 2012

У меня есть ASP.NET GridView. Теперь я добавляю свойство SortExpression к тегам <TemplateField>, чтобы сортировать определенные столбцы.

Теперь у одного из столбцов есть некоторое содержимое разметки, которое нужно добавить в заголовок. Проблема в том, что SortExpression не работает, если в <TemplateField> есть тег <HeaderTemplate>, вы должны поместить его в свойство HeaderText <TemplateField>. Но , все содержимое HTML не работает должным образом, если я помещаю его в свойство HeaderText.

<asp:TemplateField SortExpression="FK_TesterID" ItemStyle-Width="300px" FooterStyle-Width="300px" ItemStyle-HorizontalAlign="Center" FooterStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center">
        <HeaderTemplate>
        <table width="100%">
        <tr>
        <td align="center">
        Tester
        </td>
        </tr>
        <tr>
       <td>
   <asp:DropDownList ID="cmbTestersHeader" ClientIDMode="Static" runat="server" Width="300px" DataSource='<%# PopulateTesterNames() %>' DataTextField="FullName"  DataValueField = "PK_ID" Visible="false" AutoPostBack="true" OnSelectedIndexChanged="cmbTestersHeader_SelectedIndexChanged" ToolTip="Bulk Assign Testers !"  ></asp:DropDownList>
         </td>
       </tr>
        </table>
         </HeaderTemplate>

Итак, вы можете видеть, если я поместил все свойство <HeaderTemplate> в headertext, оно не будет работать.

Но я хочу иметь обе функции. Кто-нибудь может помочь?

1 Ответ

4 голосов
/ 07 марта 2012

Затем вам нужно предоставить элемент управления в HeaderTemplate с CommandName="Sort", например, LinkButton.

    <HeaderTemplate>
        <table width="100%">
            <tr>
                <td align="center">
                    <asp:LinkButton ID="LbSort" runat="server" CommandName="Sort" Text="Sort"  />
                </td>
            </tr>
            <tr>
                <td>
                    <asp:DropDownList ID="cmbTestersHeader" ClientIDMode="Static" runat="server" Width="300px"
                        DataSource='<%# PopulateTesterNames() %>' DataTextField="FullName" DataValueField="PK_ID"
                        Visible="false" AutoPostBack="true" OnSelectedIndexChanged="cmbTestersHeader_SelectedIndexChanged"
                        ToolTip="Bulk Assign Testers !">
                    </asp:DropDownList>
                </td>
            </tr>
        </table>
    </HeaderTemplate>
...