新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > .Net开发 > Asp.net教程 > 正文:不该错的问题:IsPostBack in ASP.NET, Programming with DataGrid

不该错的问题:IsPostBack in ASP.NET, Programming with DataGrid

新客网 XKER.COM 2004-12-13 来源: 收藏本文
唉,现在才发现,原来在ASP.NET中IsPostBack属性是多么的重要......

一般是在page_load中检查是否是第一次加载本页或是判断是否是用户提交(PostBack)
if (!IsPostBack) {
//do something
}
在用DataGrid访问和更新数据库时没有注意到这个问题,会出现各种各样的奇怪问题,比如我的这种.

问题描述:
用DataGrid访问和更新数据库(SQL Server --Northwind --table name:categories --Query :select categoryID,categoryName,Description form categories ),除了更新操作以外,其它功能OK.对DataGrid进行如下操作:点击“编辑”,相应的行数据变为可编辑,同时编辑按钮被“更新”和“取消”代替。对数据进行编辑,如把Description中的AAA改为BBB。再点“更新”按钮。本意是想用此方法将修改后的数据(BBB)代替数据库中原有的AAA,当然是用Update方法了。但在点“更新”后,数据没有改变,我做过测试,UPDATE方法是有效的,也就是说,UPDATE方法更新的不是新数据,而是没有修改前的旧数据,造成数据没有更新(实际上是更新了)。要注意的是我的Page_Load事件如下
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
OleAd.Fill(ds);//OleAd--oledbAdapter
dg.DataBind();//dg--DataGrid
}

分析问题(个人推测,请指正):
由于没有用IsPostBack判断是否是第一次加载此页面,所以不管什么情况下只要有PostBack,都会对dg(DataGrid)进行数据绑定。所以在进行任何的sumbit后,dg都会去数据库绑定数据而不理会页面中的数据。
当对选中的数据进行修改完毕后,在点“更新”时,提交此页面修改的数据,而马上遇到Page_Load事件,不等对修改数据进行处理,服务器就先生成原页面(MS用这种方法提高速度?),发现dg.DataBind(),执行之,于是放弃数据库更新,于是看不到更新结果了。

解决问题:
解决倒是很简单,Page_Load事件中加上对IsPostBack的判断就可以了。
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
OleAd.Fill(ds);//OleAd--oledbAdapter
if(!IsPostBack)
{
dg.DataBind();//dg--DataGrid
}
}

收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐