1

ASP.NETを持っていますGridViewSortExpressionここで、特定の列を並べ替え可能にするために、プロパティを<TemplateField>タグに追加しています。

これで、列の1つに、ヘッダーに追加するマークアップコンテンツが含まれます。問題は、にタグSortExpressionがある場合は機能しないことです。タグをのプロパティ内に配置する必要があります。ただし、プロパティ内にダンプすると、すべてのHTMLコンテンツが正しく機能しません。<HeaderTemplate><TemplateField>HeaderText<TemplateField>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

しかし、私は両方の機能を持ちたいと思っています。誰か助けてもらえますか?

4

2 に答える 2

3

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>
于 2012-03-07T15:01:21.790 に答える
0

これは、説明されている問題を正確に解決しようとしているときに偶然見つけた非常に古いスレッドですが、ここで提供されている解決策はうまくいきませんでした。GridViewにSortingメソッドが定義されている場合は、

<asp:LinkButton ID="LbSort" runat="server" CommandName="Sort" Text="Sort"  />

そのメソッドを呼び出します

protected void GridView_Sorting(object sender, GridViewSortEventArgs e)
{
    dt.DefaultView.Sort = e.SortExpression;

ただし、e.SortExpressionはnullになり、並べ替えは行われません。最初に、LinkBut​​tonのCommandArgumentを介して列の名前を渡す必要があります。その時だけ、私の場合はうまくいきました!

<asp:LinkButton ID="LbSort" runat="server" CommandName="Sort" CommandArgument="ColumnName" Text="Sort"  />
于 2021-03-15T12:27:23.510 に答える