如题,,,asp.net C#不用控制如何写分页,,,
最好可以给出代码来看看

解决方案 »

  1.   

    没明白什么意思?不用控制什么?是指控件吗?你可以不用AspnetPager这样的控件啊!ObjectDataSource本身也支持分页的。看它的属性栏,有EnablePaging, SelectCountMethod, StartRowIndexParameterName, MaximumRowsParameterName等属性。这些都和自定义分页有关的属性。配合存储过程可以不用AspnetPager这样的控件也能实现自定义分页。
      

  2.   

    非常简单,以Northwind的Products表为例,只显示三列: ProductID, ProductName, UnitPrice.
    1、写个存储过程:CREATE PROCEDURE dbo.GetProductsPaged
    (
        @startRowIndex int,
        @maximumRows int
    )
    AS
        SELECT     ProductID, ProductName,  UnitPrice
    FROM
       (
           SELECT ProductID, ProductName,UnitPrice,               
                  ROW_NUMBER() OVER (ORDER BY ProductName) AS RowRank
            FROM Products
        ) AS ProductsWithRowNumbers
    WHERE RowRank > @startRowIndex AND RowRank <= (@startRowIndex + @maximumRows)2、添加新项->数据集新建一TableAdapter,配置过程中选择‘使用现有存储过程’。当然是选刚建的那个SP了。
    下一步,下一步,完成。再给TableAdapter添加一个查询,‘使用SQL语句’->‘SELECT(返回单个值)’->SQL:select count(*) from Products, 名称就设为:SelCnt吧。3、页面上拖一个GridView,数据源选择ObjectDataSource.
    Select方法选择...GetProductsAdpater, 照这么来也就这一个选项了。
    下一步完成。4、
    到ASPX页面把<SelectParameters>全删掉,SelectCountMethod属性:SelCnt,最后<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
                OldValuesParameterFormatString="original_{0}" SelectCountMethod="SelCnt" 
                SelectMethod="GetData" 
                TypeName="DataSet1TableAdapters.GetProductsPagedTableAdapter" 
                EnablePaging="True">            
            </asp:ObjectDataSource>对了,EnablePaging="True"完事儿。照做一遍!
    以后别在贴子上说什么没有会吗这样子。其实会的只是懒的回。
      

  3.   

    如果是access又怎么不用控件写分页啊,,这个是sql有存储过程
      

  4.   

    不用控件就要用数据源分页技术了。如下代码?        protected void BindRepeater(int pagesize,int pg,string orderstr)
            {
                PagedDataSource ps = new PagedDataSource();
                ps.DataSource = 数据源;
                ps.AllowPaging = true;
                ps.PageSize = pagesize;
                ps.CurrentPageIndex = 0;
                pages.InnerHtml = db.BindPages(pg, 8, pagecount, Request.RawUrl);//分页
                Repeater1.DataSource = ps;
                Repeater1.DataBind();
            }你好好看看MSDN帮助里的PagedDataSource对象
      

  5.   

    谢谢你的回复,,,但是你也用了控件... Repeater1, Repeater分页我也会,,但是我想是不用控件,,实现分页,,,而己是access数据库
      

  6.   

    直接用sql语句,分页的时候只要拿出需要显示的部分就可以了,
      

  7.   

    LZ受控件影响太深了,那么在原来的ASP,或者PHP等等没有存在所谓的封装控件,难道就不能分页了吗?
    自己取数据,自己计算,然后在确定显示那一页,仅此而已。
      

  8.   

    呵呵,,我是asp的油条了,写分页都不用控制,,但是是在asp的情况,,,现在在转asp.net C#,我现在想知道,,asp.net c#是怎么实现的...感觉ms出的控件会把人搞傻瓜,,所以不想用控件,,,而己看那些大站,,都不怎么使用控件的,,,像动网的论坛的.net版,,,最多也是用个repeater,,其他的像51aspx的那些开源代码,,,给我的感觉悟是小学生作品,,看了,学到什么
      

  9.   


    access可以用存储过程吗?
      

  10.   


    控件是一样的原来,既然你是ASP的油条,那么这样来解释,无非两种1、你可以把数据全部读到容器里,如:DataTable,然后通过自己的逻辑来进行现实。
    2、先计算数据,然后只从数据库读取当前页的需要的信息。第一种呢一般是长期使用,而且相对固定,访问次数多,数据量不是很大的情况下用的,可以写到服务器缓存里。
    第二种呢,反之。其实分页原理一样的,无非数据操作,没有你想象的那么神秘。说白了,控件只是封装好的一些逻辑,所以让人初接受的朋友感觉到神秘,好像很专业似的,等你慢慢阅读他的源代码,你也发现其实很简单。
      

  11.   

    晕,,,当然不是啦,,,但是有时用控件,,真的不是很自由,,asp.net控件不可否认是很强大,,,但是你用控件
    不够自由吧!,,我用asp想做什么就什么,,,但是用asp.net C#控件感觉没有那么自由
      

  12.   

    想不用控制写分页,,那就要存储过程,,,
    如果用access的话,,就可以用
    PagedDataSource +Repeater1吧
    repeater只是一个容器控件,,这个控件是很自由的,,,所以你可以自由发挥,,不像其他那些多功能功能,,功能强,,但是不可以自由发挥