Gridview 手动排序实现

--aspx页面添加AllowSorting="True" AutoGenerateColumns="false"  SortExpression="f_start_date"
<asp:GridView ID="GridView1"  runat="server" GridLines="Both" Width="97%" Font-Size="12px" AutoGenerateColumns="false"  AllowSorting="True" OnSorting="GridView1_Sorting">
        <Columns>
        <asp:TemplateField HeaderText="#" HeaderStyle-Width="10%" ItemStyle-Width="10%">
        <ItemTemplate>
        <%# Container.DataItemIndex+1 %>
        </ItemTemplate>
        </asp:TemplateField>
       <asp:BoundField DataField="f_start_date" HeaderStyle-Width="20%" ItemStyle-Width="20%" HeaderText="起始时间" SortExpression="f_start_date"/>
       <asp:BoundField DataField="f_end_date" HeaderText="终止时间" HeaderStyle-Width="20%" ItemStyle-Width="20%" SortExpression="f_end_date"/>
       <asp:BoundField DataField="f_cause" HeaderText="休市原因" ItemStyle-Width="50%" HeaderStyle-Width="50%" SortExpression="f_cause"/>
        </Columns>
        </asp:GridView>
--后台.cs文件

    conn co=new conn();
    protected void Page_Load(object sender, EventArgs e)
    {
        GridView1 .DataSource =bind();
        GridView1.DataBind();

    }
public DataSet  bind()
    {
        string str_select = "select * from tbl_admin";
        DataSet ds = co.storenumshop(str_select);
        return ds;
    }
 
    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
        string sortExpression = e.SortExpression;
        //如果当前是正序,则进行倒序排序
        if (GridViewSortDirection == SortDirection.Ascending)
        {

            GridViewSortDirection = SortDirection.Descending;

            SortGridView(sortExpression, " DESC");

        }

        else
        {

            GridViewSortDirection = SortDirection.Ascending;

            SortGridView(sortExpression, " ASC");

        } 

    }

    private void SortGridView(string sortExpression, string direction)
    {
        DataTable tbl;
        tbl = Cache["market_pause"] as DataTable;
        if (tbl == null)
        {
            TimeSpan slidingExpiration = TimeSpan.FromHours(1);
            DataTable tb = bind().Tables[0];
            //设置时间为1小时,可延迟的缓存
            Cache.Insert("market_pause", tb, null, System.Web.Caching.Cache.NoAbsoluteExpiration, slidingExpiration);
            tbl = (DataTable)Cache["market_pause"];
        }

        DataTable dt = tbl;

        DataView dv = new DataView(dt);

        dv.Sort = sortExpression + direction;

        GridView1.DataSource = dv; ;

        GridView1.DataBind();

    }

    public SortDirection GridViewSortDirection
    {

        get
        {

            if (ViewState["sortDirection"] == null)

                ViewState["sortDirection"] = SortDirection.Ascending;

            return (SortDirection)ViewState["sortDirection"];

        }

        set { ViewState["sortDirection"] = value; }

    }
原文地址:https://www.cnblogs.com/xiaofengfeng/p/1929272.html