留言簿

我要留言
留言搜索

2007-12-29 12:09  zhf97421

create procedure Game_Page <br>(@Class_Id Int,<br>@pagesize int,<br>@pageindex int,<br>@docount bit)<br>as<br>set nocount on<br>if(@docount=1)<br>select count(*) from Game_List where class_id=@class_id<br>else<br>begin<br>declare @indextable table(id int identity(1,1),nid int)<br>declare @PageLowerBound int<br>declare @PageUpperBound int<br>set @PageLowerBound=(@pageindex-1)*@pagesize<br>set @PageUpperBound=@PageLowerBound+@pagesize<br>set rowcount @PageUpperBound<br>insert into @indextable(nid) select Game_Id from Game_List  where class_id=@class_id order by Game_Click desc<br>select O.select * from game_list from Game_List O,@indextable t where O.Game_Id=t.nid<br>and t.id between @PageLowerBound+1 and @PageUpperBound order by t.id<br>end<br>set nocount off

2007-12-29 11:01  chenyuly0745

首先感谢版主提供<br>我觉得分页控件应该扩展一下<br>1)控制每10页读取一下数据源<br>即 假设每页面20条记录 ,通过控件<br>一次读取10页数据 当单击下10页时<br>再读取一次数据源 而不是每改变一下<br>页号 就读取数据源
回复:您好,不用扩展,现在已经被您要求的更灵活了,因为分页控个把根本就和数据源没有任何直接关系,什么时候读取数据源以及怎么读取完全由您控制,请稍花点时间了解一下控件的工作原理。谢谢!

2007-12-28 16:53  gjhf2006

请问当记录数小于10时(设置的是一页显示10条数据),怎么设置才能使AspnetPage控件仍然显示在页面上,现在问题是记录数没有够满1页时控件不见了...
回复:设置AlwaysShow=true即可在只有一页记录时也显示分页控件。

2007-12-27 21:44  xmc605

哦,。sql2000

2007-12-27 21:22  xmc605

这样有错吗?<br>int totalOrders = (int)SqlHelper.ExecuteScalar(CommandType.StoredProcedure, &quot;P_GetPagedOrders2000&quot;);<br>            AspNetPager1.RecordCount = totalOrders;<br><br>DataList1.DataSource = SqlHelper.ExecuteReader(CommandType.StoredProcedure, ConfigurationManager.AppSettings[&quot;Sql2005Express&quot;],<br>            new SqlParameter(&quot;@startIndex&quot;, AspNetPager1.StartRecordIndex),<br>            new SqlParameter(&quot;@endIndex&quot;, AspNetPager1.EndRecordIndex));<br>        DataList1.DataBind();
回复:ConfigurationManager.AppSettings["Sql2005Express"]保存的是存储过程名称吗?这个存储过程传递的参数是@startIndex和@endIndex吗??

2007-12-27 04:06  tiancaolin

忘记补充了。刚才那个适配器的命令是这样的<br>pstr_Cmd=&quot;select * from TabelA&quot;;<br> obj_da = new OleDbDataAdapter(pstr_Cmd, obj_con);

2007-12-27 04:03  tiancaolin

您好,我用Access数据库,手工获取数据源。用您的分页控件发现一个很奇怪的问题,就是第一页可以显示控制页面大小比如10页,但第二页开始就变成了20页。<br>代码如下:如果代码太长,我将发下一留言。<br>page_Load<br>{ if(!Page.IsPostBack){<br>      AspNetPager1.RecordCount=//获取表的所有行数,这个没有问题            bindList();<br>} }<br>//可疑地方<br>bindList()<br>{<br>DataTable dt =new DataTable;<br>OleAdapter.Fill(AspnetPage.StartRecordIndex,AspnetPage.EndRecordIndex,dt);  //问题应该在这,具体是什么原因,能帮我下吗?谢谢<br><br> GridView1.DataSource = dt;<br> GridView1.DataBind();<br>  <br>}<br><br>AspNetPager1_PageChanged<br>{<br>bindList();  //这个应该也没问题<br>}
回复:这个Fill方法中第三个参数应该是要填充的记录数,而不是记录的结束索引,所以
OleAdapter.Fill(AspnetPage.StartRecordIndex,AspnetPage.EndRecordIndex,dt);
应该为:
OleAdapter.Fill(AspnetPage.StartRecordIndex,AspnetPage.PageSize,dt);

2007-12-26 17:16  ppoe

首先感谢您写的分页控件<br>在大数据量的情况下配合分页存储过程使用起来很不错  :)<br>我想请教的是:<br>请问如果数据量不大的情况下(比方说只有100条数据,我第一次就全部读取到dataset中,并缓存起来了),<br>当我触发分页事件时,<br>如何避免每次翻页都去读取数据库(您的例子中每次翻页时都是去数据库中读取当页的数据)
回复:是的,我的例子是这样写的,但不是使用AspNetPager分页控件就必须这么做,用缓存的方法当然可以,因为分页控件和数据本身没有直接关系,怎么取数据以及怎么显示数据都完全取决于开发者,分页时是从数据库中取数据还是从缓存中取数据完全由您控制,分页控件没有任何限制。谢谢!

2007-12-26 15:06  chyenc

我用<br>HttpContext.Response.Write(outputString);<br>这种方式传出页面信息 <br>outputString 为页面所有信息.请问在这种情况下,如何使用这个分页控件!<br>谢谢<br>chyenx@163.com<br>就是没有 aspx文件.所有的代码都写在CS里面!所有的页面代码都从后台输出!没有前台的aspx页面!<br>这种情况怎么用这个控件!
回复:那么您是如何使用其它控件的呢?没有aspx页面那么所有控件都是动态声明和初始化的吧?AspNetPager分页控件也是一样的。谢谢!

2007-12-26 14:55  tiancaolin

您好,您这个分页控件做的越来越不错。不过在使用中。我发现虽然说aspnetpage分页控件跟数据源无关。但在使用过程中我还是发现太依赖于SQL的分页存储过程。但有时自己数据源只想要由代码来控制比较灵活,不想用什么SqlDataSource或什么AccessDataSource。以及不需要靠什么存储过程,这时我发现好难下手。因为你的数据源必须传递页面大小和第几个页来进行条件查询。不依赖存储过程好像很难。特别是现在我用Access数据库做程序更不知道怎么下手。LZ能发个Access,代码控制数据源不依赖其他数据组建的例子给我吗?tiancaolin@163.com
回复:您好,我已经重复过很多次了:AspNetPager分页控件和数据没有直接关系!!数据从哪里来,怎么显示以及如何获取都是需要开发者自己处理的问题!所以您上面所说的这些DataSource以及存储过程和分页控件没有丝毫关系,分页控件本来就不依赖存储过程,至于Access数据库的分页例子,控件的示例项目中就有,您可以到下载页面自己下载看看。谢谢!
;