使用ASPX页面中的jQuery对话框将弹出的用户控件打开

时间:2012-02-09 23:36:47

标签: jquery asp.net user-controls dialog popup

我正在尝试使用Aspx页面中的jQuery对话框打开用户控件(Memo.ascx)作为弹出窗口。

ASPX:

 <td>
  <asp:ImageButton ID="btnMemo" runat="server"  AlternateText="Memo" CausesValidation="false"    
     OnClientClick="PrepareNOpenDialog()" ClientIDMode ="Static" />
    <div id="divMemoInfo" title="Memo"></div>
 </td>

JQuery:

$(function () {
      PrepareNOpenDialog(); 
});

function PrepareNOpenDialog() {

    $('#divMemoInfo').dialog(); //init the dialog (consider div as a dialog)
    $('#divMemoInfo').dialog('close'); //prevent the dialog from showing after initiation

    $('#divMemoInfo').load('Memo.ascx');

    dialogOptions = {
        modal: true
                , buttons: {
                    'Close': function () {
                        $(this).dialog('close');
                    }
                }
                , minWidth: 400
                , minHeight: 200
                , width: $(window).width() / 3 //'auto'
                , height: 'auto'
    };

    //open dialog when image clicked
    $('#btnMemo').click(function () {
        $('#divMemoInfo').dialog(dialogOptions);
    });

}

我在 onClientclick = OpenMemo()

时遇到了预期的对象错误

请建议。

由于

BB

2 个答案:

答案 0 :(得分:3)

你有两个问题,你设置OnClientClick =“OpenMemo()”,但我没有看到定义的OpenMemo()javascript函数。您似乎已经有一个“btnMemo”的点击处理程序,因此您的OnClientClick =“OpenMemo”应该被删除。

你的第二个问题是

$('#divMemoInfo').load('Memo.ascx');

此行不起作用。 load方法需要一个URL,可以从中检索内容。您需要将Memo.ascx包装在一个aspx文件中,然后使用aspx文件的URL调用load。如果您只需要Memo.ascx的内容,那么在调用完成时选择它封装的元素。

答案 1 :(得分:1)

没有名为OpenMemo()的javascript函数(作为旁白惯例规定函数名称从小写开始)

尝试创建如下函数:

   function OpenMemo(){    
        $('#divMemoInfo').dialog("open");
}