我正在开发一个Web应用程序,我正在使用GridView控件从数据库加载数据。
我有一行以可编辑模式加载。我有一个保存按钮,用户在进行更改后单击,我想检查IsDirty标志以阻止用户保存并通过警告框通知他们。我正在使用Web用户控件(ASCX)来加载GridView。如何在用户单击保存按钮或注销按钮时检查网格中的脏行并阻止用户保存?
P.S。我正在使用LoginView登出按钮。
答案 0 :(得分:1)
您需要在网格中处理OnRowUpdating事件,例如:
<asp:GridView id="a" runat="server" OnRowUpdating="a_rowUpdating" ... />
在代码背后:
protected void a_rowUpdating (object sender, GridViewUpdateEventArgs e)
{
//Add logic appropriately to know whether you should allow the update or not.
//If you shouldn't, just set e.Cancel=true as below:
e.Cancel=true;//will stop from updating.
}
您可以访问GridViewUpdateEventArgs
对象中的旧值和新值。有关详细信息和示例代码,请查看here.
答案 1 :(得分:0)
我使用一个简单的JS方法来检查ASP.net页面中的各种更改。我将它添加到一个名为CheckDirty.js的JS文件管理器中,并在页面上添加了一个链接,在该文件中是这段代码:
var checkDirty = true;
var form_clean;
//this should be called when the save button is clicked, but prior to the page post
function onSave() {
checkDirty = false;
}
// serialize clean form
$(function () {
form_clean = $("form").serialize();
});
window.onbeforeunload = function (e) {
if (checkDirty) {
var form_dirty = $("form").serialize();
if (form_clean != form_dirty) {
return 'Your changes will be lost';
}
}
};
这也适用于对gridview的更改,并会提醒用户。我发现这种方法最好,因为它适用于所有内容,我不需要为不同的控件编写不同的方法。