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/archive/2011/01/06/1929272.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值