【问题标题】:calling __dopPostback from javascript where target control is an ASP.Net custom control从目标控件是 ASP.Net 自定义控件的 javascript 调用 __dopPostback
【发布时间】:2009-11-10 16:30:32
【问题描述】:

我需要在提交之前弹出一个 jquery 对话框作为确认。我不希望对话框总是弹出,这取决于下拉菜单的设置。

提交控件(顺便说一下,我无法更改)是一个自定义控件,带有保存和取消按钮以及保存和取消按钮的处理程序。

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

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

我有

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

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

hdnPostBack 字段包含以下结果:

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

不出所料,这不起作用。 mySaveCancelCustomControl 是上面提到的自定义控件,它有两个按钮,由两个事件处理程序呈现,因此 GetPostBackEventReference 注定会失败。

有什么想法我应该怎么做?

【问题讨论】:

  • 最终存储在 hdnBtnPostback 中的实际字符串是什么(调用 GetPostBackEventReference 的结果)?

标签: asp.net javascript jquery postback


【解决方案1】:

您可以将按钮设置为对话框按钮,并在页面上放置一个 asp.net 按钮,ID 为 HiddenButton,然后将其包装在样式为 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() 调用 user UniqueID 中不起作用,我不记得它是哪个。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-02-21
      • 2010-09-23
      • 2011-06-15
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      相关资源
      最近更新 更多