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)
{
protected void Page_Load(object sender, EventArgs e)
{
GridView1 .DataSource =bind();
GridView1.DataBind();
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; } }