gridview,使用自定义分页,如何实现点击标题列排序?
由于使用自定义分页,也就是每次查询只查询当前页面的数据,所以点击标题列,能排序但只是本页面的记录进行排序,
我想实现的是:点击标题列之后,整个数据集排序之后,再取出当前页面的记录集。

解决方案 »

  1.   


    http://blog.csdn.net/zhensoft163/archive/2010/06/07/5654256.aspx
      

  2.   

    HTML
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="Blue"
                            BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Vertical"
                            Width="98%" AllowSorting="True" OnSorting="GridView1_Sorting">
                            <FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
                            <Columns>
                                <asp:BoundField HeaderText="Text1" DataField="Column1" SortExpression="Column1"/>
                                <asp:BoundField HeaderText="Text2" DataField="Column2" SortExpression="Column2"/>
                                <asp:BoundField HeaderText="Text3" DataField="Column3" SortExpression="Column3"/>
                            </Columns>后台using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class admin_OrderAnalyse : System.Web.UI.Page
    {protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){// 设定初始排序参数值this.GridView1.Attributes.Add("SortExpression", "id");this.GridView1.Attributes.Add("SortDirection", "ASC");// 绑定数据源到GridView this.BindGridView();}}protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
        {
            //从事件参数获取排序数据列
            string sortExpression = e.SortExpression.ToString();
            //假定为排序方向为“顺序”
            string sortDirection = "ASC";
            //“ASC”与事件参数获取到的排序方向进行比较,进行GridView排序方向参数的修改
            if (sortExpression == this.GridView1.Attributes["SortExpression"])
            {
                //获得下一次的排序状态
                sortDirection = (this.GridView1.Attributes["SortDirection"].ToString() == sortDirection ? "DESC" : "ASC");
                // 重新设定GridView排序数据列及排序方向程序开
                this.GridView1.Attributes["SortExpression"] = sortExpression;
                this.GridView1.Attributes["SortDirection"] = sortDirection;
                this.BindGridView();
            }
        }     /// <summary>
        /// 绑定到GridView
        /// </summary>
        private void BindGridView()
        {
            // 获取GridView排序数据列及排序方向
            string sortExpression = this.GridView1.Attributes["SortExpression"];
            string sortDirection = this.GridView1.Attributes["SortDirection"];
            // 调用业务数据获取方法
            DataTable dt= this.BindDt();
            // 根据GridView排序数据列及排序方向设置显示的默认数据视图
            if ((!string.IsNullOrEmpty(sortExpression)) && (!string.IsNullOrEmpty(sortDirection)))
            {
                dtBind.DefaultView.Sort = string.Format("{0} {1}", sortExpression, sortDirection);
            }
            // GridView绑定并显示数据
            this.GridView1.DataSource = dt;
            this.GridView1.DataBind();    }DataTable BindDt()
       {
            DataTable dt = new DataTable();
            dto.Columns.Add("XXX");
            dto.Columns.Add("XXX");
            dto.Columns.Add("XXX",typeof(int));        DataRow dr = dto.NewRow();
          
            dr["XXX"] =         dr["XXX"] =                dr["XXX"] =         dto.Rows.Add(dr);
            return dt;
        }}
    类似的