不想用GridView自代的分页。想自己写一个,在GridView的基础上自己手写分页。哪个有原代码发来看一下,或者有类似的参考一下也行。多谢了

解决方案 »

  1.   

    补充一点。我用的是AspNetPager
      

  2.   

          #region 分页方法 多个表联合,PK_ID不唯一时,要指定主键
            /// <summary>
            /// 分页方法 多个表联合,PK_ID不唯一时,要指定主键
            /// </summary>
            /// <param name="Index">开始页</param>
            /// <param name="Size">页大小</param>
            /// <param name="Rows">总行数</param>
            /// <param name="Tabs">要查询的表</param>
            /// <param name="Display">要显示的内容</param>
            /// <param name="Condition">搜条件</param>
            /// <param name="OrderBy">排序</param>
            /// <param name="KeyWord">关键字,查询时的唯一标记</param>
            /// <returns>返回一张表</returns>
            public static DataTable RunPagination(int Index, int Size, out int Rows, string Tabs, string Display, string Condition, string OrderBy, string KeyWord)
            {
                Rows = (int)ExecuteScalar("Select Count(*) From " + Tabs + " Where 1=1 " + Condition);            StringBuilder sql = new StringBuilder();
                sql.Append("Select Top " + Size.ToString());
                sql.Append(" " + Display + " From " + Tabs + " Where 1=1 " + Condition);            if (Index > 1)
                {
                    sql.Append(" And " + KeyWord + " Not In (Select Top ");
                    sql.Append(Convert.ToString((Index - 1) * Size) + " " + KeyWord + " From " + Tabs + " Where 1=1 " + Condition);                if (OrderBy != "")
                    {
                        sql.Append(" Order By " + OrderBy + " )Order By " + OrderBy);
                    }
                    else
                    {
                        sql.Append(" )");
                    }
                }
                else if (OrderBy != "")
                {
                    sql.Append(" Order By " + OrderBy);
                }            try
                {
                    return ExecuteDataTable(sql.ToString());
                }
                catch
                {
                    return null;
                }
            }
            #endregion        #region 分页方法 单表,主键唯一时 即,只有一个PK_ID
            /// <summary>
            /// 分页方法 单表,主键唯一时 即,只有一个PK_ID
            /// </summary>
            /// <param name="Index">开始页</param>
            /// <param name="Size">页大小</param>
            /// <param name="Rows">总行数</param>
            /// <param name="Tabs">要查询的表</param>
            /// <param name="Display">要显示的内容</param>
            /// <param name="Condition">搜条件</param>
            /// <param name="OrderBy">排序</param>
            /// <returns>返回一张表</returns>
            public static DataTable RunPagination(int Index, int Size, out int Rows, string Tabs, string Display, string Condition, string OrderBy)
            {
                Rows = (int)ExecuteScalar("Select Count(*) From " + Tabs + " Where 1=1 " + Condition);            StringBuilder sql = new StringBuilder();
                sql.Append("Select Top " + Size.ToString());
                sql.Append(" " + Display + " From " + Tabs + " Where 1=1 " + Condition);            if (Index > 1)
                {
                    sql.Append(" And PK_ID Not In (Select Top ");
                    sql.Append(Convert.ToString((Index - 1) * Size) + " PK_ID From " + Tabs + " Where 1=1 " + Condition);                if (OrderBy != "")
                    {
                        sql.Append(" Order By " + OrderBy + " )Order By " + OrderBy);
                    }
                    else
                    {
                        sql.Append(" )");
                    }
                }
                else if (OrderBy != "")
                {
                    sql.Append(" Order By " + OrderBy);
                }            //try
                //{
                return ExecuteDataTable(sql.ToString());
                //}
                //catch
                //{
                //    return null;
                //}
            }
            public static DataTable RunPaginationP(int Index, int Size, out int Rows, string Tabs, string Display, string Condition, string OrderBy, string PKID)
            {
                Rows = (int)ExecuteScalar("Select Count(*) From " + Tabs + " Where 1=1 " + Condition);            StringBuilder sql = new StringBuilder();
                sql.Append("Select Top " + Size.ToString());
                sql.Append(" " + Display + " From " + Tabs + " Where 1=1 " + Condition);            if (Index > 1)
                {
                    sql.Append(" And " + PKID + " Not In (Select Top ");
                    sql.Append(Convert.ToString((Index - 1) * Size) + " " + PKID + " From " + Tabs + " Where 1=1 " + Condition);                if (OrderBy != "")
                    {
                        sql.Append(" Order By " + OrderBy + " )Order By " + OrderBy);
                    }
                    else
                    {
                        sql.Append(" )");
                    }
                }
                else if (OrderBy != "")
                {
                    sql.Append(" Order By " + OrderBy);
                }            //try
                //{
                return ExecuteDataTable(sql.ToString());
                //}
                //catch
                //{
                //    return null;
                //}
            }
            #endregion
      

  3.   

       /// <summary>
            /// 提取SysHelp表里的数据并且绑定到GridView中,返回一个DataTable
            /// </summary>
            /// <param name="Index">开始页</param>
            /// <param name="Size">页大小</param>
            /// <param name="Rows">总行数</param>
            /// <param name="TableName">要查询的表</param>
            /// <param name="Display">要显示的内容</param>
            /// <returns>返回一张表</returns>
            public static DataTable GetSysHelp(int Index, int Size, out int Rows, string TableName, string Display, string SysName)
            {
                return SQLHelper.RunPagination(Index, Size, out Rows, TableName, Display, " and SysName='" + SysName + "'", " Createtime DESC");
            }
      

  4.   

    public static string LinkString(string p_FileName,int p_GroupLength,int p_RecordCount,int p_CurrPage,int p_PageCount)
    {
    int page = p_CurrPage;//当前页
    int gNum = p_GroupLength; //组元素数
    int recordCount = p_RecordCount;//记录总数
    int gSum = (gNum>0)?(Convert.ToInt32(Math.Ceiling(p_PageCount*1.0/gNum))):0;//组数
    int pSum = p_PageCount;//总页数
    string fileName = (p_FileName.IndexOf("?")>0)?(p_FileName + "&"):(p_FileName + "?");

    string str="共 "+p_RecordCount+" 项 ";

    if (recordCount == 0)
    {
    return  str+"首页&nbsp;上一页&nbsp;下一页&nbsp;尾页";
    } if (page==1)
    {
    str += "首页&nbsp;上一页&nbsp;";
    }
    else
    {
    str += "<a href='"+fileName+"page=1' class='down' title='首页'>首页</a>&nbsp;<a href='"+fileName+"page="+(page-1)+"' class='down' title='上一页'>上一页</a>&nbsp;";
    } str += "<span class='down'>"; for (int j = 1;j<=gSum;j++)
    {
    if (page>=((j-1)*gNum+1) && page<=(j*gNum) )
    {
    if (page>gNum)
    {
    str += "│<a href='"+fileName+"page="+((j-2)*gNum+1)+"' class='down'   title='前"+gNum.ToString()+"页'>...</a>";
    } for (int p=(j-1)*gNum+1;p<=(j*gNum);p++)
    {
    if (p==page)
    str +=  "│<b>" +p.ToString()+"</b>";
    else
    {
    if (p <= (j*gNum) && p<=pSum)
    str += "│<a href='"+fileName+"page="+p+"' class='down'  title='第"+p.ToString()+"页'>"+p.ToString()+"</a>";

    }
    } if ( page <= ((gSum-1)*gNum))
    {
    str += "│<a href='"+fileName+"page="+(j*gNum+1)+"' class='down'  title='后"+gNum.ToString()+"页'>...</a>│";
    }
    else
    {
    str +="│";
    }
    }
    } str += "</span>";
    if (page==pSum)
    {
    str += "&nbsp;下一页&nbsp;尾页";
    }
    else
    {
    str += "&nbsp;<a href='"+fileName+"page="+(page+1)+"' class='down'  title='下一页'>"+"下一页"+"</a>&nbsp;<a href='"+fileName+"page="+pSum.ToString()+"' class='down' title='尾页'>尾页</a>";
    } return str;
    }
      

  5.   

    用aspnetpager和gridview控件没关,主要是datasource设置
      

  6.   

    假设已经把数据读取到DataSet类的ds中:protected void bind()
    {
                AspNetPager1.RecordCount = ds.Tables[0].Rows.Count;
                PagedDataSource pd = new PagedDataSource();
                pd.DataSource = ds.Tables[0].DefaultView;
                pd.AllowPaging = true;
                pd.PageSize = AspNetPager1.PageSize;
                pd.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
                GridView1.DataSource=ds;
                GridView1.DataBind();
    }
    protected void AspNetPager1_PageChanged(object sender, EventArgs e)
    {
                bind();
    }    写
      

  7.   

    上面那行写错了:GridView1.DataSource=ds;应该是:GridView1.DataSource=pd;