为什么DataGrid分页,删除到 mydatagrid.pagecount mod mydatagrid.pagesize =1就失败

supersyd 2004-03-15 10:26:38
为什么DataGrid分页,并且 可以删除记录。
删除到 mydatagrid.pagecount mod mydatagrid.pagesize =1就失败
Invalid CurrentPageIndex value. It must be >= 0 and < the PageCount

举个例子 ,数据库有9条记录,4条分一页,当删除第三页(第9条记录)
即出现以上错误!
但如果在第二页或第一页删除就没有出错信息!
具体怎么改?

'------------------------绑定Mydgrd 数据(既绑定用户的留言) ----------
'----------------------------------------------------------------->>>
Sub Bind_Mydgrd()
MyConnection = New SqlConnection(dbconn)
Myada =New SqlDataAdapter("select * from electro_gov",MyConnection)
Myds = New DataSet
Myada.Fill(Myds,"info")
Mydgrd.DataSource = Myds.Tables("info").DefaultView
Mydgrd.DataBind()
MyConnection.Close()
ShowCounts()
End Sub
'<<<--------------------------------------------------------------------
'----------------------------------------------------------------------

'-------------------------------------------------------------------------
'------------------------删除Mydgrd 数据(既删除用户的留言)-------------->>>
Sub delete_it(S As Object,E As EventArgs)
warn.Text =nothing
Strsql ="delete from electro_gov where id= " & s.CommandArgument
MyConnection = New SqlConnection(dbconn)
Mycmd =New SqlCommand(Strsql ,MyConnection)
MyConnection.Open()
Try
Mycmd.ExecuteNonQuery()
Catch Exc As SQLException
warn.Text ="数据库操作(删除)失败!"
warn.ForeColor=System.Drawing.Color.Red
Finally
MyConnection.Close()
End Try
'Mydgrd.CurrentPageIndex=0
Bind_Mydgrd()
End Sub
'<<<------------------------------------------------------------------------------
'------------------------------------------------------------------------------
Sub Mydgrd_Page(sender As Object, e As DataGridPageChangedEventArgs)
Mydgrd.CurrentPageIndex = e.NewPageIndex
Bind_Mydgrd()
End Sub

<asp:label ID="warn" Font-Size="9" runat="server"/><asp:label ID="page_count" Font-Size="9" runat="server"/>
<asp:datagrid
ID="Mydgrd"
AutoGenerateColumns="false"
BorderWidth="0"
Width="100%"
ItemStyle-VerticalAlign="top"
ShowHeader="false"
DataKeyField="id"
AllowPaging="True"

PageSize="4"
PagerStyle-Mode="NumericPages"
OnPageIndexChanged="Mydgrd_Page"
runat="server">
<columns>
<asp:templatecolumn>
<itemtemplate>
</datagrid>
...全文
45 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
supersyd 2004-04-03
  • 打赏
  • 举报
回复
谢谢vabug(边缘) 解决了。 散分了!
supersyd 2004-04-01
  • 打赏
  • 举报
回复
vabug(边缘)大哥,你的这段话是加在sub pagechanged 中吗?
supersyd 2004-04-01
  • 打赏
  • 举报
回复
谢谢大家哦。我好久没看这个帖子了,这两天就结贴,其实上面说的我以前都理解,非常明白
但我怎么改都不成,有具体的解决方案吗
vabug 2004-03-23
  • 打赏
  • 举报
回复
这是一个很著名的问题,好像zdnet上有篇英文的文章介绍了解决方案,笔者还咨询过微软,当然微软没有回答,DeleteCommand至少个占位符,什么也不干,代码自己得写!

解决方案:::
int l=Myds.Tables("info").Rows.Count % Mydgrd.PageSize ;
if(l==0)
DataGdTB.CurrentPageIndex=DataGdTB.PageCount-2;
DataGdTB.DataSource=Myds.Tables("info");
DataGdTB.DataBind();
Mybeautiful 2004-03-23
  • 打赏
  • 举报
回复
zhongkeruanjian(编程亮子)
分析的够透彻了,
用wwfloat(方舟)的方法试着解决一下...
caojingui 2004-03-23
  • 打赏
  • 举报
回复
删除后从新绑定就可以了
wwfloat 2004-03-23
  • 打赏
  • 举报
回复
if (DataGrid1.CurrentPageIndex>DataGrid1.PageCount-1)
{
DataGrid1.CurrentPageIndex=DataGrid1.PageCount-1;
}
HenanBoy 2004-03-23
  • 打赏
  • 举报
回复
你每次删除后从新邦定不久性了
zhongkeruanjian 2004-03-23
  • 打赏
  • 举报
回复
很简单,
第一点,当DATAGRID第一次绑定的时候,他的PAGEINDEX就已经VIEWSTATE,除非你显式的改变它,比如在PANGCHANGE事件中,而PAGECOUNT是根据绑定数据源的条数来确定的。
第二点,PAGEINDEX必须大于等于0和小于PAGECOUNT,不要问我为什么,呵呵
好,看看你的代码
当你在第三页删除记录的时候,你的第三页只有一条记录(这是很重要的),现在你的PAGECOUNT是3,PAGEINDEX是2,好,你点击DELETE按钮,页面回访,页面调用你的删除方法,
呵呵,重新绑定,DATAGRID重新计算PAGECOUNT(根据PAGESIZE)重新设置PAGECOUNT为2,而现在呢,你的PAGEINDEX为2,呵呵,你发现问题了吧,
好吧,剩下的工作你自己做吧
WAWQ 2004-03-23
  • 打赏
  • 举报
回复
up

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧