我有一个保存按钮,单击该按钮应在数据库中进行一些更改。
if (bFound== false)
{
// Giving the warning message
// If user presses cancel then abort
// Prepare the list of dbId needs to be deleted
deletedBSIds.Add(dbId);
}
这里如果
bFound
字段为真则不应执行上述语句,但如果为假则应进入条件,然后询问用户是否要保存更改"is"或“否”。如果用户说是,它应该转到命令“
deletedBSIds.Add(dbId);
”并继续执行,但如果用户按下否,它应该基本上中止并且什么都不做。有没有办法做到这一点?
任何帮助,将不胜感激。
这是一个服务器端事件。所以我认为不能在我的按钮中添加点击事件/..
此处仅当 bFoung 字段为 false 时才会弹出消息框。否则它根本不会弹出。
如果你觉得我错了,请纠正我..
谢谢
最佳答案
您需要将以下内容添加到按钮中:
button.OnClientClick = "return ConfirmThis();";
然后,您需要将 ConfirmThis 函数添加到页面:
Page.ClientScript.RegisterScriptBlock(GetType(), "ConfirmThis",
@"function ConfirmThis() {
if(condition) { //where condition checks the bfound element.
return confirm(""Are you sure you want to delete this?"");
}
return true;
}");
使用这种方法,您将想要尝试并能够在 javascript 中测试客户端的 bfound 条件。如果
bfound
值存储在 textbox
中或 HiddenField
您应该使用 document.getElementById
功能。如果 bfound
创建页面时值是已知的,您可以将其注入(inject) ConfirmThis
直接函数,将其传递到 ConfirmThis
函数作为参数。根据您的编辑进行编辑:
尝试从用户那里获得确认时,您有两种选择:
在这两个示例中,第一个选项更简洁,不需要临时内存,并且为用户节省了额外的回发。
因为这两个选项都将要求您重新编写要求确认的逻辑,所以如果可能的话,我会尝试转换条件所需的逻辑以显示确认对话框,以便能够使用 javascript 在客户端计算机上执行。
有什么方法可以预先计算 bfound 变量,或者至少发送足够的信息以便在客户端计算它?
如果在我恳求之后您仍然想使用选项 2:
使用以下代码(基于 http://www.dotnetspider.com/resources/1521-How-call-Postback-from-Javascript.aspx :
if(bfound)
{
//save all the information you need in temporary information
ViewState["InformationINeedToFinishAfterPostback"] = ImportantInformation;
Page.ClientScript.RegisterScriptBlock(GetType(), "postbackmethod", Page.ClientScript.GetPostBackEventReference(this, "MyCustomArgument"));
Page.ClientScript.RegisterStartupScript(GetType(), "startupconfirm",
@"if(confirm(""are you sure?"") {
__doPostBack('__Page', 'MyCustomArgument');
}");
}
现在要处理回发,请将以下代码添加到您的 page_load:
if(Request("__EVENTARGUMENT") == "MyCustomArgument")
{
ImportantInformation = (CastToAppropriateType)ViewState["InformationINeedToFinishAfterPostback"];
//finalize the desired action here.
}
但是... 我仍然会推荐第一个选项。但是现在您拥有了这两个选项所需的代码。另外,我没有测试这段代码,所以你肯定会遇到语法问题,但它会让你走上正轨。
关于c# - 确认消息框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1603359/