我有一个ASP.NET GridView
。现在我将SortExpression
属性添加到<TemplateField>
标记,以使特定列可排序。
现在,其中一列有一些标记内容要添加到标题中。问题是,如果SortExpression
中有<HeaderTemplate>
标记,则<TemplateField>
不起作用,您必须将其放在HeaderText
<TemplateField>
属性中。 但是,如果我将其转储到HeaderText
属性中,则所有HTML内容都无法正常工作。
<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
中,它就不起作用。
但我想要兼具两种功能。有人可以帮忙吗?
答案 0 :(得分:4)
然后,您需要在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>
答案 1 :(得分: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 将为空并且不会发生排序。您必须首先通过 LinkButton 的 CommandArgument 传递 Column 的名称。只有这样才对我有用!
<asp:LinkButton ID="LbSort" runat="server" CommandName="Sort" CommandArgument="ColumnName" Text="Sort" />