单击“取消Javascript确认”框不会阻止网格刷新

时间:2011-12-19 19:37:06

标签: c# javascript asp.net

如何在javascript确认框上点击取消按钮停止呈现.cs代码?

我有一个按钮点击事件,在某些IF条件下,我要求用户确认。现在,当用户单击“确定”按钮时,我必须在网格中绑定新数据。但如果用户单击取消按钮,则不应使用新数据刷新网格。

问题:点击JavaScript确认框中的取消按钮,如何停止执行以下代码,或者如何从JavaScript返回/中断?

任何人都可以帮我解决这个问题吗?提前谢谢。

标记

<asp:Button ID="btnCopy" runat="server" Text="Copy" Enabled="false" OnClick="btnCopy_Click" ValidationGroup="Copy" />

代码

public void btnCopy_Click(object sender, EventArgs e) { 
    if (Convert.ToInt32(hidId.Value) > 0) {
        string scriptString = "<script language='JavaScript'> ";
        scriptString += "if (confirm('Are you sure to proceed?') == false) {return} ";
        scriptString += "</script>";
        Page.RegisterStartupScript("Confirm", scriptString);
        BindDataGrid();
    }
}

5 个答案:

答案 0 :(得分:7)

您在同一事件中混合服务器端和客户端端代码,必须将其分开:

<强>脚本:

function Confirm()
{
    var record=confirm('Are you sure to proceed??');
    if(record == 1)
    {
        return true;
    }
    else if(record == 0)
    {
        return false;
    }
 }

<强>标记:

<asp:Button ID="btnCopy" runat="server" Text="Copy" Enabled="false" 
    OnClick="btnCopy_Click" OnClientClick='return Confirm();' ValidationGroup="Copy" />

<强>代码隐藏:

public void btnCopy_Click(object sender, EventArgs e) { 
    if (Convert.ToInt32(hidId.Value) > 0) {      
        BindDataGrid();
    }
}

答案 1 :(得分:1)

您需要捕获响应,例如:

if (window.confirm)
{
//handle the OK
}
else
{
//handle the cancel
}

答案 2 :(得分:0)

请显示代码,但是如果没有看到您的代码我会猜测您没有返回响应?

<input type="button" onclick=" return confirm('is this right?'); ">

答案 3 :(得分:0)

您可以通过代码return简单地exit(0)

function fillGrid()
{
 if( confirm("....") )
 {
  //populate your grid
 }
 else
 {
   return;
 }

 //do anything after the grid is populated
 //and exit the function
}

答案 4 :(得分:0)

您在按钮点击后面的代码中显示确认对话框,不会停止代码流。

您需要在执行回发之前显示确认对话框

<asp:Button ID="btnCopy" runat="server" Text="Copy" Enabled="true" OnClientClick="return confirm('sure?');" ValidationGroup="Copy" />