在后面的代码上调用确认对话框并获取所选选项

时间:2012-11-22 19:57:29

标签: c# javascript asp.net

我正在开发一个asp.net应用程序,我需要在后面的代码上调用一个确认对话框。之后,我需要获得用户的点击(如果他点击确定或取消)。

如果他点击对话框的OK按钮,我必须继续运行我停止的代码,然后才能调用对话框。

为了解决这个问题,我想在aspx中输入一个类型按钮的输入,并将它的样式设置为visibility:hide。因此,当用户单击“确定”按钮时,程序将调用此隐藏按钮,该按钮调用将继续停止作业的方法。

我会发布我的代码,我希望它可以提供帮助。

下面的代码在我的代码后面,它调用了确认对话框。

System.Web.UI.
    ScriptManager.RegisterClientScriptBlock(this, GetType(), "__Mensagem", "if (confirm('" + CustomMessage + "')){document.getElementById(\'<%=btnSave.ClientID%>\').click();}", true); 

下面的代码在我的aspx上,它是“隐藏”按钮。

<input style="visibility:hidden;" id="btnSave" runat="server" onclick="btnSave_Click"/>

我不知道为什么不工作。单击确认对话框的确定​​按钮后收到的错误如下:Erro em tempodeenduçãodoMicrosoft JScript:'document.getElementByID(...)'énuloounãoéumobjeto

我来自巴西所以错误是葡萄牙语,英语翻译就像这样:

“Microsoft JScript上发生运行时错误'document.getElementByID(...)'为null或不是对象”

我看一下页面的html代码,我注意到按钮不存在。

也许是因为我正在使用UpdatePanel,但是当我删除它时(仅用于测试,我必须使用更新面板),显示相同的错误,并且此时按钮位于页面的html代码上。

3 个答案:

答案 0 :(得分:1)

在黑暗中刺伤。

在您的代码隐藏中,您设置了btnSave.visible = false;吗?如果是这样,这将阻止按钮呈现为HTML

另外,您是否有任何理由不使用ASP:按钮控件,而不是HTML与runat="server"的混合?

最后,type='button'

<input....可能会有所帮助

<强>更新

问题是您正在尝试应用内联标记         document.getElementById(\'<%=btnSave.ClientID%>\')

您的代码中的

<%=btnSave.ClientID%>尚不存在。

当您将按钮放在另一个服务器控件中时,您的代码将会中断,因为clientId会变得不同。

将代码更改为:

     document.getElementById('" + btnSave.ClientID + "')

无论您在哪里都有按钮,它都能正常工作。

答案 1 :(得分:0)

在浏览器中呈现页面后,右键单击它,然后说出“查看源”。检查HTML并尝试查找隐藏按钮,如果找到,请在语句getElementById(\'<%=btnSave.ClientID%>\')中使用其ID。如果你没找到你的按钮,那么你可能已经从代码隐藏处将其可见性设置为false,删除它,再次按照上述过程进行操作,你应该没问题。

答案 2 :(得分:0)

我解决了替换部件的问题

document.getElementById(\'<%=btnSave.ClientID%>\').click();

通过

$(\"#ctl00_body_btnSave\").click();

我也用asp:Button替换输入元素。

现在看看我的代码在我的代码背后是什么:

System.Web.UI.
    ScriptManager.RegisterClientScriptBlock(this, GetType(), "__Mensagem", "if (confirm('" + CustomMessage+ "')){$(\"#" + btnSave.ClientID + "\").click();}", true);

在我的aspx上:

<asp:Button id="btnSave" Width="0px" Text="" runat="server" onclick="btnSave_Click"/>

不建议使用Widht =“0px”和Text =“”来隐藏按钮,但我使用它是因为它不会给我带来问题。建议使用CssClass使其隐藏。

因此,如果用户确认操作,则调用偶数btnSave_Click。

感谢所有答案。