基于gridview双头对列进行排序

时间:2011-07-30 07:26:12

标签: .net asp.net visual-studio sorting gridview

我有一个要求,我需要对gridview的列进行排序。但问题是,我需要在gridview列下面放置一个额外的行,这些行将具有升序和降序排序图像。单击此图像时,应对所选列进行排序。

请指导我!!

如果您有任何疑问/疑问,请告诉我

谢谢!

1 个答案:

答案 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);
      }
    }
  }