ASP.NET中TextBox点击保存后恢复旧值问题求助
排查TextBox保存后恢复原内容的问题
嘿,我来帮你搞定这个头疼的问题!这种情况我在项目里碰到好多次了,大概率是数据加载、绑定或者页面生命周期的小疏漏,给你列几个最常见的原因和解决办法:
保存后不小心重新加载了旧数据
很多时候,你在保存按钮的点击事件里,刚执行完数据库更新,结果又顺手调用了加载数据的方法(比如LoadRecord()这类用来初始化控件的逻辑),直接把刚输入的内容覆盖回旧值了。赶紧检查你的SaveButton_Click方法,确保更新完成后没有重复执行加载原记录的代码。数据绑定没同步(分平台情况)
- 如果是WinForms:要是你用了
BindingSource绑定实体类到txt_desc,更新数据库后要先把实体类的对应属性改成txt_desc的新值,再调用bindingSource.ResetBindings(false)刷新绑定,不然控件会一直显示旧的绑定值。 - 如果是ASP.NET WebForms:重点看
Page_Load里的代码!是不是每次页面回发(比如点按钮)都重新绑定数据了?一定要加上IsPostBack判断:
没加这个判断的话,每次点击按钮都会重新拉取旧数据,直接覆盖你输入的内容。protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) // 只在首次加载页面时加载数据 { LoadDataToTextBoxes(); } }
- 如果是WinForms:要是你用了
数据库更新根本没成功
别光看控件的变化,先确认数据库里的记录到底有没有被更新!可能你的SQL语句有问题(比如WHERE条件没匹配到记录、参数名写错),或者事务回滚了,导致更新失败。可以在更新代码里加个调试:比如看ExecuteNonQuery()的返回值,如果是0,说明没有记录被修改,得先把数据库更新的逻辑修对。ASP.NET的ViewState被禁用了
要是你用的是WebForms,检查txt_desc的EnableViewState属性是不是被设成false了?这个属性默认是true,要是关了,页面回发时控件会丢失用户输入的内容,直接回到初始状态。
给你个小调试技巧:在点击保存按钮的瞬间,先把txt_desc的内容存到一个临时字符串变量里,然后一步步跟踪代码,看这个变量什么时候被覆盖成旧值,很快就能找到问题根源啦!
内容的提问来源于stack exchange,提问作者Naga Raj
相关产品推荐
相关产品推荐

