tempad
ReadyGo!技术成就梦想 >>数据库技术 >> 从数据库里查到11条记录,每页显示10个,第二页只有一条记录,当删除第二页这条记录后,DataSet再次绑定就出现了错误(DataSet仍然将CurrentIndexPage的值当作1),请高手指点如何解决?

从数据库里查到11条记录,每页显示10个,第二页只有一条记录,当删除第二页这条记录后,DataSet再次绑定就出现了错误(DataSet仍然将CurrentIndexPage的值当作1),请高手指点如何解决?

ReadyGo!技术成就梦想 网络搜索 efish 2008-1-13 11:11:59

从数据库里查到11条记录,每页显示10个,第二页只有一条记录,当删除第二页这条记录后,DataSet再次绑定就出现了错误(DataSet仍然将CurrentIndexPage的值当作1),请高手指点如何解决?

楼主rabbit99(小兔子乖乖)2002-01-04 17:41:26 在 .NET技术 / ASP.NET 提问

问题点数:52、回复次数:7Top

1 楼jefflam(商务开拓先锋)回复于 2002-01-05 08:31:52 得分 26

所以每次都需要重新去select数据出来绑定。Top

2 楼rabbit99(小兔子乖乖)回复于 2002-01-05 09:15:58 得分 0

重新选择了,可是不行,下面是部分代码(C#),jefflam兄看看问题在什么地方。  
  protected   System.Web.UI.WebControls.DataGrid   grdManage;  
  private   DataSet   dsManage   =   new   DataSet();  
  private   Login   scManage   =   new   Login();//自己写的一个数据库链接和操作的类  
  private   string   strSqlAccount   =   "";  
   
  //删除函数  
  private   void   grdManage_DeleteCommand(object   source,   System.Web.UI.WebControls.DataGridCommandEventArgs   e)  
  {  
  int   intCurrentPageIndex   =   grdManage.CurrentPageIndex;  
  string   strUserID   =   grdManage.DataKeys.ToString();                          
  strSqlAccount   =   "Delete   from   T_Account   where   UserID   =   ""   +strUserID   +   """;  
  scManage.ConnOpen();  
  scManage.UpdateDataBase(strSqlAccount);  
  scManage.ConnClose();  
  grdManage.EditItemIndex   =   -1;  
  BindData();  
  }  
   
  //下面是BindData()  
  private   void   BindData()  
  {  
  scManage.ConnOpen();  
  strSqlAccount   =   "select   *   from   T_Account";  
  dsManage   =   scManage.GetDataSet(strSqlAccount);  
  grdManage.DataSource   =   dsManage;  
   
  if((grdManage.PageCount   !=   0)   &&   (grdManage.PageCount   -   grdManage.CurrentPageIndex   ==   0))  
        {  
              grdManage.CurrentPageIndex   =   grdManage.PageCount   -   1;  
        }  
  //Response.Write(grdManage.CurrentPageIndex);  
  //Response.Write(grdManage.PageCount);  
  //当删除最后一页仅有的一条记录时页数变化,是在DataSet帮定之后还是在之前???  
  try  
  {  
  grdManage.DataBind();  
  }  
  catch   (Exception   e)  
  {  
  e.ToString();  
  }  
   
  scManage.ConnClose();  
  }Top

3 楼netcar(netload)回复于 2002-01-05 09:39:55 得分 26

这确实是个问题,呵呵...  
  你可以写个函数,在绑定前判断记录集中的总记录数与Pagesize*PageCount的关系,并以次来调整CurrentIndex的值,然后再进行绑定.Top

4 楼rabbit99(小兔子乖乖)回复于 2002-01-05 09:55:16 得分 0

顺便问一下netcar兄,PageCount的值是在绑定前有的还是在绑定后有的,当我在IE直接输入aspx文件时,PageCount的值为0,当刷新页面之后,虽然Response.Write(grdManage.PageCount)在绑定之前执行,可是值却已经是1了,是不是由于DataSet在内存中还保存着记录?Top

5 楼rabbit99(小兔子乖乖)回复于 2002-01-05 12:10:05 得分 0

^_^,问题已经解决,   将条件判断语句放在finally区域就可以了。  
   
  try  
  {    
          grdManage.DataBind();  
  }  
  catch   (Exception   e)  
  {  
          e.ToString();    
  }  
  finally  
  {  
          if((grdManage.PageCount   !=   0)   &&   (grdManage.PageCount   -   grdManage.CurrentPageIndex   ==   0))  
          {  
                  grdManage.CurrentPageIndex   =   grdManage.PageCount   -   1;  
                  grdManage.DataBind();  
          }  
  }  
  Top

6 楼rabbit99(小兔子乖乖)回复于 2002-01-05 12:11:47 得分 0

给分了。Top

7 楼gust99(阿呆)回复于 2002-01-09 10:55:48 得分 0

好招!Top

责任编辑: efish 参与评论 查找更多:
相关文章
FourCC

FourCC

楼主jinbing(若晴)2002-01-04 17:42:29 在 VC/MFC / Visual C++ 资源 提问

那位高手知道fourcc是什么东东?高分奉上 问题点数:…

Delph5下的dcu文件怎么在Delphi6下使用呀 Delph5下的dcu文件怎么在Delphi6下使用呀
索虎数码工作室想找几个兼职的成员加盟,谁有兴趣呀…

索虎数码工作室想找几个兼职的成员加盟,谁有兴趣呀。

本人已开发出CRM客户关系管理系统,希望和你讨论其市… 本人已开发出CRM客户关系管理系统,希望和你讨论其市场问题?
★●☆ 又是五天的辛苦工作,为促进交流, 继续发布… ★●☆ 又是五天的辛苦工作,为促进交流, 继续发布源代码,需要者请跟我联系 ☆●★
我写一个控件,有个属性需要用TNotebook的Pages的属…

我写一个控件,有个属性需要用TNotebook的Pages的属性编辑器,应该怎么办,请各位多帮忙。

@#@#@#《怎样捕捉到窗体的句病,然后向它发送信息》…

@#@#@#《怎样捕捉到窗体的句病,然后向它发送信息》@#@#@# 有分呀

楼主Mohoman(恶魔可乐)2002-01-04 17:46:39 在 VB / 基础类 提问

请问怎样…

2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn

分类导航
ReadyGo!技术成就梦想