我有一个网络表单,我注册了一名新员工。表格中有3个部分:个人信息,地址信息,特殊状态。但是整个表单只有一个按钮。当我提交表单时,所有信息都会更新到数据库。因此,对数据库执行了三个Update语句。方法是UpdatePersonalInfo,UpdateAddressInfo和UpdateSpStatus。有没有办法检查某个部分中的任何字段是否发生了变化,并且仅当它是真的时才运行更新方法。所以像这样:
if (There's been any change to the personal data of the employee)
{
UpdatePersonalInfo;
}
if (There's been any change to the address information of the employee)
{
UpdateAddressInfo;
}
当然我知道,我可以将所有先前的值保存在PageLoad中的会话对象中,然后在运行该方法之前逐个进行比较。但我想也许有一种神奇的方法可以更容易地做到这一点。
答案 0 :(得分:3)
不确定这是一个比您已经提到的任何替代方案更好的解决方案,但是您可以创建一个默认处理程序来附加到控件的TextChanged
,SelectedIndexChanged
等事件以保持跟踪哪些已经改变。
List ChangedControls = new List(Of, String);
private void ChangedValue(object sender, System.EventArgs e) {
WebControl cntrl = (WebControl) sender;
ChangedControls.Add(cntrl.ID);
}
然后在您的按钮上点击搜索相关控件的ChangedControls
列表。