比如数据库中有30条记录,是这样的表T1只有两个字段id     userid
1      1
2      2
3      3
......
29     29
30     30全部显示的话select * from T1假如我要查询ID>10的,每页10条记录,这样的话就是分2页select * from T1 where id>10第一页应该显示
id      userid
10      10
11      11
.......
20      20
第二页显示
id      userid
21      21
22      22
.......
30      30查询出来第一页显示正确,但是第二页还是显示
id      userid
10      10
11      11
.......
20      20
我想了一下,应该是查询条件没有传递过来
在asp中可以通过querystring来解决,我的做法就是将条件加在后面但是在ASP。NET中如何做呢,也要通过QUERYSTRING吗,但是我用的是GRIDVIEW要通过SESSION吗?还有没有其他的解决办法,越简单越好

解决方案 »

  1.   

    配合存储过程一起使用
    参数传递
    page.aspx?pageindex=1
    pageindex是当前页
      

  2.   

    在asp.net中用querystring也可以,如果你不想这么做,我的办法是把页码存放在页面上。可以页面上加如下代码。
    <input id="pagenum" type="hidden" runat="server" value="">
    这样写你可以在代码页中直接调用它。
    pagenum.value=3   '设置页码
    dim t as int32
    t=pagenum.value    '取页码值
    我试过即使页面是以iframe形式嵌入其它页,页码读取也是正常的,如果是session就可能出问题。这是个人建议,你可以试一下。
      

  3.   

    分页的存储过程Create  PROC [dbo].[SP_SQL_Query] 
    @SqlStr     NVARCHAR(4000), --查询字符串  
    @CurrentPage    INT,        --第N页   
    @PageSize       INT --每页行数  
    AS 
    BEGIN 
    SET NOCOUNT ON 
      DECLARE @P1 INT, --P1是游标的id   
      @rowcount INT   
      EXEC sp_cursoropen @P1 OUTPUT,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output   
      SELECT CEILING(1.0*@rowcount/@pagesize) AS 总页数--,@rowcount as 总行数,@currentpage as 当前页   
      SET @currentpage=(@currentpage-1)*@pagesize+1   
      EXEC sp_cursorfetch @P1,16,@currentpage,@pagesize     
      EXEC sp_cursorclose @P1   
    SET NOCOUNT OFF 
    END 
      

  4.   

    GridView自定义分页的四种存储过程
    http://blog.csdn.net/amandag/archive/2008/07/14/2646472.aspx
      

  5.   

    你用的是Asp.net1.1开发的吧..
    2.0分页都不用自己写代码..很方便.1.1我也不太懂,要写很多代码到网上搜索一下分页的代码吧,呵呵
      

  6.   

    方法太多了,看你要走那条?如果是数据传递的话,还是用post方法较好
      

  7.   

    有个现成的aspnetpager 用得挺广泛的 给它的"当前页"赋值就可以改变了 
      

  8.   

    方法还是比较多的,
    gridview还是很好用的
      

  9.   

    asp.net2.0中的数据控件里
    只有gridview是可以分页的,不过也要自己写代码
    其他如repeter,datalist==都要自己用存储过程来分页
    要么就直接用aspnetpager....无敌的什么都好分....
      

  10.   

    select * from T1 where id>10 怎么可以实现分页呢·······迷惑 如果ID不是+1递增呢·····
      

  11.   

    楼主使用的是gridview自带的分页吧,那就得写分页代码
    GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
    GridView1.PageIndex = e.NewPageIndex;
    //重新绑定数据
    }
      

  12.   

    如果数据源是用SqlDataSource,直接提供分页功能,设置就行;人说使用SqlDataSource不方面,一开始偶信,
    后来感觉没什么不方便的,可能是偶做的东西小吧
      

  13.   

    url?page=5;page_load(...)
    {
        int pagesize = 5;
        int p = Request.QueryString("page");
        bindPageData(p,pagesize);
    }void bindPageData(int p,int pagesize)
    {
        string sqls="select top "+pagesize+" somefield from table ";
        if (p!=1)
            sqls += " where tableid not in (select top "+(p-1)*pagesize+" tableid from table order by tableid desc) ";
        sqls+=" order by tableid desc ";
        
        string pageCountsql = "select count(*) as total from table ";
        setConn And Command (自已写...);    DataTable dt = .....
        Repeater.DataSource = dt ;
        int pageCount = (.....) 计算总页数.
        lbl.Text = setPages(p);
    }function setPages(int p,int pageCount)
    {
       string strhtml = " ";
       for (int i=1;i<=pageCount;i++)
       {
           str hrefStr = "";
           if (i==p)
               hrefStr = "<a href='url?page="+i+"'>[<font color=red>" + i + "</font></a> | ";
           else
               hrefStr = "<a href='url?page="+i+"'>[" + i + "</a> | ";
           strhtml += hrefStr;
       }   return strhtml;
    }
      

  14.   

    CREATE PROCEDURE Up_SortLink 
    (@start int ,
    @number int)
    as
    SET NOCOUNT ON
    select top @number  * 
     from Link 
    where ( id >all
     (select  top @start [ id] 
     from Link
     order by id )) 
    order by idGO
      

  15.   

    create proc page2005
    @PageIndex int,--第几页
    @PageSize int  --每页几条记录
    as
    declare @RecordCount int,@PageCount int
    select @RecordCount=count(*) from student
    set @pagecount=ceiling(@RecordCount*1.0/@PageSize)
    if @PageIndex>@pagecount
     set @PageIndex = @pagecount-1 --last page
    if @PageIndex <0
     set @PageIndex = 0 --first page
    select sqno,* from
    (select sid,deptid,sno,sname,row_number() over (order by sid desc) as sqno from student) as s
    where s.sqno > (@PageIndex*@PageSize) and s.sqno <= ((@PageIndex+1)*@PageSize)--exec page2005 10,20
      

  16.   

    GridView不支持url分页,自己写代码实现的话也不那么好实现的,你可以试试我写的AspNetPager免费分页控件,完全开源并且有详细的使用示例,现在正在升级到7.2版,楼主感兴趣的话可以到我的主页看看: http://www.webdiyer.com
    也谢谢楼上的几位兄弟推荐AspNetPager!