从javascript调用__dopPostback,其中目标控件是ASP.Net自定义控件

时间:2009-11-10 16:30:32

标签: asp.net javascript jquery postback

我需要在提交发生之前弹出一个jquery对话框作为确认。我不想总是弹出对话框,这取决于下拉列表的设置。

提交控件(我不能改变)是一个自定义控件,带有保存和取消按钮以及保存和取消按钮的处理程序。

因此,当用户从下拉列表中选择了一个特定项目时,我将使用jQuery将保存按钮(已由自定义控件呈现)的click事件(在客户端上)连接到js函数,我的showDialog()函数然后返回false(以防止回发)。

当用户单击对话框上的“是”按钮时,我现在需要调用__doPostBack来触发SaveButtons服务器端事件并使服务器端验证运行。

我有

eval($("#<%= hdnBtnPostback.ClientID %>").val());

在对话框中“是”按钮的处理程序中。

hdnPostBack字段包含以下结果:

Page.ClientScript.GetPostBackEventReference(mySaveCancelCustomControl, String.Empty)

毫无疑问,这不起作用。 mySaveCancelCustomControl是上面提到的自定义控件,它有两个用两个事件处理程序呈现的按钮,因此GetPostBackEventReference注定要失败。

我应该做些什么?

2 个答案:

答案 0 :(得分:1)

您可以将按钮设置为对话框按钮,并在ID为HiddenButton的页面上放置一个asp.net按钮,并将其包装在样式为display:none;的div中,以便按钮不可见。 (不得为Visible =“false”,以便呈现按钮)

在javascript对话框中添加一个具有单击隐藏按钮

效果的按钮
jQuery("#dialog").dialog({
        buttons: {
       'ButtonText': function() {
       __doPostBack('<%# HiddenButton.ClientID %>', '')
            jQuery(this).dialog('close');
        }
    }
});

并将asp点击处理程序添加到隐藏按钮

<div style="display:none;">
    <asp:Button ID="HiddenButton" OnClick="HiddenButton_Click" ></Button>
<div>

点击对话框按钮时,服务器端的点击事件(HiddenButton_Click)将会触发

希望这有助于我一直使用这种模式

ps如果ClientID在__doPostback()调用用户UniqueID中不起作用,我就无法记住它是什么。

答案 1 :(得分:0)

当您在客户端进行新的点击连接时,是否可以将当前的点击方法保存到临时变量中,然后从“是”按钮调用临时变量?