从数据库里查到11条记录,每页显示10个,第二页只有一条记录,当删除第二页这条记录后,DataSet再次绑定就出现了错误(DataSet仍然将CurrentIndexPage的值当作1),请高手指点如何解决?
从数据库里查到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
-
相关文章
FourCC
楼主jinbing(若晴)2002-01-04 17:42:29 在 VC/MFC / Visual C++ 资源 提问那位高手知道fourcc是什么东东?高分奉上 问题点数:…
索虎数码工作室想找几个兼职的成员加盟,谁有兴趣呀。
我写一个控件,有个属性需要用TNotebook的Pages的属性编辑器,应该怎么办,请各位多帮忙。
@#@#@#《怎样捕捉到窗体的句病,然后向它发送信息》@#@#@# 有分呀
楼主Mohoman(恶魔可乐)2002-01-04 17:46:39 在 VB / 基础类 提问请问怎样…
2秒记住本站域名
玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn
