我有一个保存按钮,点击它时应该在数据库中进行一些更改。
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
字段为true,则不应执行上述语句,但如果为false,则应该进入该条件,然后询问用户是否要保存更改“是”或“否”
如果用户说是,则应该转到命令“deletedBSIds.Add(dbId);
”并继续执行,但如果用户按下否则它应该基本上中止并且什么都不做。
有办法做到这一点吗? 任何帮助将不胜感激。
这是服务器端事件。所以我认为不能在我的按钮/...//>中添加点击事件
此处仅在bFoung字段为false时弹出消息框。否则它根本不会弹出。
如果你觉得我错了,请纠正我。
感谢
答案 0 :(得分:6)
您需要在按钮中添加以下内容:
button.OnClientClick = "return ConfirmThis();";
然后,您需要将ConfirmThis函数添加到Page:
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
值,则可以直接将其注入ConfirmThis
函数,并将其作为参数传递给ConfirmThis
函数。
尝试从用户那里获得确认时,您有两个选择:
在这两个示例中,第一个选项是更清晰,不需要临时内存,并为用户节省了额外的回发。
因为这两个选项都要求你重新修改要求确认的逻辑,如果可能,我会尝试转换条件所需的逻辑,以显示确认对话框,以便能够在客户端的计算机上执行用javascript。
有没有什么方法可以预先计算bfound变量,或者至少发送足够的信息以便在客户端上计算?
使用以下代码(基于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.
}
但是...... 我仍然会推荐第一个选项。但是现在你有了两个选项所需的代码。另外,我没有测试这段代码,所以你一定会遇到句法问题,但它会让你走上正轨。
答案 1 :(得分:3)
我不确定bfound应该代表什么,但是你不能通过某些服务器代码执行1/2方式然后返回到客户端 - ASP.NET不会那样工作。
通常,您将使用某些客户端JavaScript进行确认。谷歌ASP.NET是/否确认找到许多不同的方法来做到这一点...
完成此操作后,您可以有条件地执行服务器端代码。
答案 2 :(得分:1)
您可以使用Javascript confirm()功能向用户显示一个对话框,并显示“确定”和“取消”提示。然后,您可以将用户的选择存储在隐藏字段中并触发回发。这个article解释了如何使用ASP.NET将Javascript代码呈现给客户端。
答案 3 :(得分:0)
由于您使用的是ASP.NET,因此可以向按钮添加属性:
btnDelete.Attributes.Add("onclick", "return confirm('Are you sure?');");
btnDelete是你的按钮。