我有一个要求,我需要对gridview的列进行排序。但问题是,我需要在gridview列下面放置一个额外的行,这些行将具有升序和降序排序图像。单击此图像时,应对所选列进行排序。
请指导我!!
如果您有任何疑问/疑问,请告诉我
谢谢!
答案 0 :(得分:1)
我的决定:
<asp:GridView runat="server" ID="GridViewTest" DataSourceID="CustomersSource" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:Panel runat="server" BorderWidth="1">
<asp:Label runat="server" Text='column {CustomerID}'></asp:Label>
</asp:Panel>
<asp:Panel runat="server">
<asp:ImageButton runat="server" AlternateText="asc" CommandName="CustomerID" CommandArgument="<%# CommandArgumentAsc %>" OnClick="ImageButton_Click" />
<asp:ImageButton runat="server" AlternateText="desc" CommandName="CustomerID" CommandArgument="<%# CommandArgumentDesc %>" OnClick="ImageButton_Click" />
</asp:Panel>
</HeaderTemplate>
<ItemTemplate>
<%# Eval("CustomerID")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<asp:Panel runat="server" BorderWidth="1">
<asp:Label runat="server" Text='column {CompanyName}'></asp:Label>
</asp:Panel>
<asp:Panel runat="server">
<asp:ImageButton runat="server" AlternateText="asc" CommandName="CompanyName" CommandArgument="<%# CommandArgumentAsc %>" OnClick="ImageButton_Click" />
<asp:ImageButton runat="server" AlternateText="desc" CommandName="CompanyName" CommandArgument="<%# CommandArgumentDesc %>" OnClick="ImageButton_Click" />
</asp:Panel>
</HeaderTemplate>
<ItemTemplate>
<%# Eval("CompanyName")%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:sqldatasource id="CustomersSource"
selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]"
connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>"
runat="server"/>
代码背后:
protected const string CommandArgumentAsc = "asc";
protected const string CommandArgumentDesc = "desc";
protected void ImageButton_Click(object sender, ImageClickEventArgs e)
{
var imageButton = sender as ImageButton;
if (imageButton != null)
{
if (imageButton.CommandArgument == CommandArgumentAsc)
{
GridViewTest.Sort(imageButton.CommandName, SortDirection.Ascending);
}
if (imageButton.CommandArgument == CommandArgumentDesc)
{
GridViewTest.Sort(imageButton.CommandName, SortDirection.Descending);
}
}
}