2009-11-10 53 views
0

我需要弹出一个jQuery对话框作为确认之前提交发生。我不想让对话总是弹出,这取决于下拉菜单的设置。从javascript调用__dopPostback目标控件是一个ASP.Net自定义控件

的提交控制(我不能由方式改变)是具有保存和取消按钮和处理程序保存和取消按钮的定制控制。

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

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

我在处理程序对话框上的是按钮得到

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

的hdnPostBack字段包含的结果:

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

Unsuprisingly这是行不通的。 mySaveCancelCustomControl是上面提到的自定义控件,它有两个用两个事件处理程序呈现的按钮,所以GetPostBackEventReference注定会失败。

任何想法我应该做什么?

+0

什么是最终存储在hdnBtnPostback中的实际字符串(您调用GetPostBackEventReference的结果)? – Ray 2009-11-10 16:39:19

回答

0

当您在客户端连接最多新的点击,可以保存当前点击方法引入一个临时变量,然后调用您的是按钮的临时变量?

1

您可以使按钮成为对话框按钮,并在页面上放置一个带有HiddenButton ID的网页按钮,并将其包装在样式为display:none;的div中,以便该按钮不可见。 (必须是不可见=“假”,因此该按钮被渲染)

在该对话框中的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)会火的时候,对话框按钮被点击

希望这有助于我使用这个模式的所有日e时代

PS如果客户端ID不会在__doPostBack()调用用户工作的UniqueID我不记得它是。