asp.net中datagridview的分页功能用存储过程做,怎么做,最好能贴出代码,或给连接,给例子也可以,我要完整的而且是可以用的没有错误的,急用!!!!!!!!
c#+vs2005+sql2005

解决方案 »

  1.   

    csdn论坛这个模块不就是给发问题的吗,都去百度,csdn论坛就没有存在的必要了。
      

  2.   

    刚毕业,很多不懂,都不是你的错,你的错在于不思考,不动脑筋,甚至连搜索都不用.
    直接靠别人给"最好能贴出代码,或给连接,给例子也可以,我要完整的而且是可以用的没有错误的"
    这种是工作的态度?是学习的态度?大学4年什么都没学会问题不大,至少要学会一件事情,知道如何去学习.如果连如何学习都丢掉,做什么事情想都不想,就要别人来帮忙,还直接给完全能用的源代码.那一辈子都是代码搬运工.见过太多这样的人了,刚毕业-->CTRL + V , CTRL + C 一年 --> 一年之后依旧是徘徊在原地,仅知道拖控件 ,CTRL + V , CTRL + C当然,也不是说CTRL + V , CTRL + C有错,谁都是从这个动作开始,但是在做这个动作的时候,至少要想下为什么,下次如何做更好."只是在网上搜索的那些,有些不完整,有些又是错误不会调试,学会调试,多试几次过不去了再上来问.是不是我一楼的那句"急用个P"刺痛了你的神经,让你张口就是"尼玛","250"?
      

  3.   


    存储过程:---亲测275万数据,分页速度N快create PROCEDURE PageList 
    @tablename nvarchar(50),
    @fieldname nvarchar(50)='*',
    @pagesize int,--每页显示记录条数
    @currentpage int,--第几页
    @orderid nvarchar(50),--主键排序
    @sort int,--排序方式,1表示升序,0表示降序排列
    @rowcount int output,--总记录数,共有几条信息
    @pagecount int output--总页数,共有多少页
    AS
    declare @countsql nvarchar(50)
    declare @sql nvarchar(200)
    declare @subsql nvarchar(100)--not in子sql语句
    declare @tmpOrderid nvarchar(50) 
    --返回总记录数,并赋值给输出参数@rowcount
    set @countsql='select @totalcount=count(*) from '+@tablename
    exec sp_executesql @countsql,N'@totalcount int out',@rowcount output--判断字段名是否为空
    if @fieldname is null or @fieldname=''
    set @fieldname=' * '--判断是否排序及排序方式
    if @orderid is null or @orderid=''
    set @tmpOrderid=' '
    else
    begin 
    if @sort=0
    set @tmpOrderid='order by '+@orderid+' desc'
    else
    set @tmpOrderid='order by '+@orderid+' asc'
    end--计算页数
    if @rowcount%@pagesize>0
    set @pagecount =(@rowcount/@pagesize)+1;
    else
    set @pagecount=@rowcount/@pagesize;--分页算法实现
    set @subsql='select top'+str(@pagesize*(@currentpage-1))+' '+@orderid+' from '+@tablename+' '+@tmpOrderid
    set @sql='select top'+str(@pagesize)+' '+@fieldname+' from '+@tablename+' where '+@orderid+' not in ('+@subsql+')'+@tmpOrderid
    exec(@sql)
      aspx文件: <asp:GridView ID="GridView1" runat="server">
            </asp:GridView>
            </div>
            第<asp:Label ID="lblCurrent" runat="server"></asp:Label>页 | 每页<asp:Label ID="lblPageSize"
                runat="server"></asp:Label>条 | 共有<asp:Label ID="lblPageTotal" runat="server"></asp:Label>页 |  共有<asp:Label ID="lblRowsTotal"
                runat="server"></asp:Label>条信息 |
            <asp:HyperLink ID="hlFirst" runat="server">首页</asp:HyperLink>
            |
            <asp:HyperLink ID="hlPrev" runat="server">上一页</asp:HyperLink>
            |
            <asp:HyperLink ID="hlNext" runat="server">下一页</asp:HyperLink>
            |
            <asp:HyperLink ID="hlLast" runat="server">尾页</asp:HyperLink><br />  .cs文件: protected void Page_Load(object sender, EventArgs e)
        {
            int CurrentPage,RowCount,PageCount;
            int PageSize = 2;
            if (Request["CurrentPage"] == null||Convert.ToInt32(Request["CurrentPage"])< 1)
            {
                CurrentPage=1;
            }
            else
            {
                CurrentPage=Convert.ToInt32(Request["CurrentPage"]);
            }        //数据库操作
            SqlConnection sqlconn = new SqlConnection(ConfigurationManager.AppSettings["ConnStr"].ToString());
            SqlCommand cmd = new SqlCommand("pagelist", sqlconn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection = sqlconn;
            SqlParameter[] prams ={
                                   new SqlParameter("@tablename",SqlDbType.NVarChar,50),
                                   new SqlParameter("@fieldname",SqlDbType.NVarChar,50),
                                   new SqlParameter("@pagesize",SqlDbType.Int),
                                   new SqlParameter("@currentpage",SqlDbType.Int),
                                   new SqlParameter("@orderid",SqlDbType.NVarChar,50),
                                   new SqlParameter("@sort",SqlDbType.Int),
                                   new SqlParameter("@rowcount",SqlDbType.Int),
                                   new SqlParameter("@pagecount",SqlDbType.Int)};
            prams[0].Value = "news";//表名
            prams[1].Value ="*";//字段名
            prams[2].Value =PageSize;//每页显示条数
            prams[3].Value =CurrentPage;//当前页数
            prams[4].Value ="id";//主键
            prams[5].Value =1;//排序方式,0表示降序,1表示升序
            prams[6].Direction = ParameterDirection.Output;//总记录数
            prams[7].Direction = ParameterDirection.Output;//总页数
            foreach(SqlParameter pram in prams)
            {
                cmd.Parameters.Add(pram);
            }
            sqlconn.Open();
            SqlDataAdapter sda = new SqlDataAdapter();
            DataSet ds = new DataSet();
            sda.SelectCommand = cmd;
            sqlconn.Close();
            sda.Fill(ds);
            //数据库操作结束        RowCount = (int)cmd.Parameters["@rowcount"].Value;
            PageCount =(int)cmd.Parameters["@pagecount"].Value;
            
            if (CurrentPage>PageCount)
            {
                Response.Redirect("CutPage.aspx?CurrentPage="+Convert.ToString(PageCount));
                Response.End();
            }
            this.lblCurrent.Text = Convert.ToString(CurrentPage);
            this.lblPageTotal.Text = Convert.ToString(PageCount);
            this.lblRowsTotal.Text = Convert.ToString(RowCount);
            this.lblPageSize.Text = Convert.ToString(PageSize);        this.hlFirst.NavigateUrl = "CutPage.aspx?CurrentPage=1";
            this.hlPrev.NavigateUrl = "CutPage.aspx?CurrentPage=" + Convert.ToString(CurrentPage-1);
            this.hlNext.NavigateUrl = "CutPage.aspx?CurrentPage=" + Convert.ToString(CurrentPage+1);
            this.hlLast.NavigateUrl = "CutPage.aspx?CurrentPage=" + Convert.ToString(PageCount);
            if (Convert.ToInt32(CurrentPage) == 1)
            {
                this.hlPrev.Enabled = false;
                this.hlFirst.Enabled = false;
            }
            if (Convert.ToInt32(CurrentPage) == PageCount)
            {
                this.hlNext.Enabled = false;
                this.hlLast.Enabled = false;
            }        GridView1.DataSource = ds.Tables[0];
            GridView1.DataBind();
        }
      

  4.   

    demo下载http://download.csdn.net/source/425475
      

  5.   

    以8楼的例子来说        this.hlPrev.NavigateUrl = "CutPage.aspx?CurrentPage=" + Convert.ToString(CurrentPage-1);
            this.hlNext.NavigateUrl = "CutPage.aspx?CurrentPage=" + Convert.ToString(CurrentPage+1);需要增加一个 textbox + input
    在textbox设置需要跳转的页数
    然后在input click事件中指向 :  
    CutPage.aspx?CurrentPage=" + textbox.text;
    当然还有些细节要完善,例如防止index out of range另外还可以预先绑定多个 HyperLink 来达到 page <<|<1|2|3|4|5|>|>> 这种效果
    就如CSDN的分页一样.
      

  6.   

    分页控件例子<asp:GridView ID="GridView1" runat="server" EnableViewState="false">
        </asp:GridView>
        <webdiyer:AspNetPager ID="AspNetPager1" runat="server" PageSize="10" OnPageChanging="AspNetPager1_PageChanging">
        </webdiyer:AspNetPager>using System;
    using System.Data;
    using Wuqi.Webdiyer;
    using ZhongCong.WebForm;public partial class MySql : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DisplayData(AspNetPager1.PageSize, 1);
            }
        }    private void DisplayData(int pageSize, int pageIndex)
        {
            string sqlStr = "select count(*) from 测试";
            MySqlData md = new MySqlData();
            AspNetPager1.RecordCount = Convert.ToInt32(md.ExecuteScalar(sqlStr));
            sqlStr = String.Format("select * from 测试 limit {0},{1}", ((pageIndex - 1) * pageSize).ToString(), pageSize.ToString());
            md.SetCommandText(sqlStr);
            DataTable dt = md.FillDataTable();
            md.Close();
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }    protected void AspNetPager1_PageChanging(object src, PageChangingEventArgs e)
        {
            AspNetPager1.CurrentPageIndex = e.NewPageIndex;
            DisplayData(AspNetPager1.PageSize, AspNetPager1.CurrentPageIndex);
        }}