CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

datagrid绑定datareader,到底怎么翻页

楼主whatisit(itiswhat)2002-09-17 08:13:27 在 .NET技术 / C# 提问

以前也有人提过,最后的解决方法是自己写sql语句实现,但是我不要  
   
  datagrid绑定datareader,其自动生成的上页,下页就是不可选的,但是我用了一个button强制CurrentPage+1  
  连续两次后,两者都变的可以点击了,但是点了以后会出现当前页面必须小于pagecount大于0的错误  
   
   
  首先不要和我说要PageIndexChanged事件。我已经添加如下  
  this.DataGrid_TH.PageIndexChanged   +=   new   System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid_TH_PageIndexChanged);  
   
  private   void   DataGrid_TH_PageIndexChanged(object   source,   System.Web.UI.WebControls.DataGridPageChangedEventArgs   e)    
  {    
  Response.Write(e.NewPageIndex.ToString   ());  
  SqlDataReader1=this.SqlCommand1.ExecuteReader();  
  DataGrid_TH.DataSource   =SqlDataReader1;  
  DataGrid_TH.CurrentPageIndex=e.NewPageIndex;    
  Response.Write(DataGrid_TH.PageCount.ToString   ());  
  //DataGrid_TH.DataBind();  
  }    
   
  也不要和我说和datagrid设置有关  
  看看AllowCustomPaging="True",PageSize="2"应该也够了  
  <asp:datagrid   id="DataGrid_TH"   runat="server"   Width="100%"   SelectedIndex="1"   AllowPaging="True"   PageSize="2"   CellPadding="0"   AllowCustomPaging="True"   >  
   
  也不要和我说datareader是一次性的,每次要重新打开和绑定,我上面已经作了  
  (如果没有重新绑定就更没戏了)  
   
  也不要老说dataset,dataset没有问题,但是我打定主意就要用datareader  
   
  然后,我发现在绑定之前CurrentPageIndex是正常的,PageCount就是等于1  
  如果把上面的代码中//去掉,它就会提示说CurrentPage必须大于0小于等于PageCount,也就是说  
  唯一可能就是在绑定的时候,PageCount没有被改变,是因为它以为datareader只可以读一次所以就只读了一页的量吗??  
   
  简单的说,请你告诉我怎么样才能  
   
  问题点数:100、回复次数:5Top

1 楼seani(Jason)回复于 2002-09-17 09:10:35 得分 0

你搜索下翻页,很多以前很多这帖子  
  Top

2 楼spring_ok(广州泰能软件)回复于 2002-09-17 09:59:29 得分 100

我发明这个方法来实现你的功能,(不知是不是我第一个发明,:-)):  
  public   void   BindGrid(int   PageIndex)  
  {  
  string   strSql,   strSql1;  
  strSql   =   "Select   GroupID,   GroupName,   SortOrder,   Remark   From   Groups";  
  strSql1   =   "select   count(*)   from   groups";  
  OleDbConnection   connCip=   new   OleDbConnection(ConfigurationSettings.AppSettings["ConnectionString"]);  
  OleDbCommand   cmdCip   =   new   OleDbCommand(strSql,connCip);  
  cmdCip.CommandType   =   CommandType.Text;  
   
  connCip.Open();  
   
  cmdCip.CommandText   =   strSql1;  
  int   count   =   System.Convert.ToInt32(cmdCip.ExecuteScalar());  
   
   
  cmdCip.CommandText   =   strSql;  
  OleDbDataReader   dr   =   cmdCip.ExecuteReader();  
   
  int   i   =   0;  
  if   (i   <     PageIndex   *   DataGrid1.PageSize)  
  {  
  while   (i   <   PageIndex   *   DataGrid1.PageSize)  
  {  
  dr.Read();  
  i++;  
  }  
  }  
  DataGrid1.VirtualItemCount   =   count;  
  DataGrid1.CurrentPageIndex   =   PageIndex;  
  DataGrid1.DataSource   =   dr;  
  DataGrid1.DataBind();  
   
  connCip.Close();  
   
  }  
   
  第一次打开页面时用   BindGrid(0)   来调用。翻页时用   BindGrid(e.NewPageIndex)来调用。Top

3 楼whatisit(itiswhat)回复于 2002-09-17 15:58:56 得分 0

谢谢楼上的,给分,另外,有个问题,为什么BindGrid(0)也要点两次,datagrid的翻页才能使用???Top

4 楼spring_ok(广州泰能软件)回复于 2002-09-17 23:48:16 得分 0

我的例子是不需要点击两次的。  
  你是放在Page_Load中吗?还应该判断只有在不是PostBack时才绑定。Top

5 楼whatisit(itiswhat)回复于 2002-09-18 15:12:21 得分 0

谢谢,搞定了Top

相关问题

  • datagrid翻页的时候到底有没有再次查询数据库?
  • 有关DataGrid翻页
  • DataGrid翻页请教!
  • DataGrid 翻页问题!
  • DataGrid翻页报错,急求~~~~
  • DATAGRID的翻页的问题
  • DataGrid的翻页问题
  • datagrid翻页程序,错误在哪里.不能翻页
  • iframe 翻页问题到底怎么解决?
  • iframe 翻页问题到底怎么解决?

关键词

  • datagrid
  • cmdcip
  • 绑定
  • conncip
  • datareader
  • strsql
  • pageindexchanged
  • pagecount
  • th

得分解答快速导航

  • 帖主:whatisit
  • spring_ok

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo