Откройте пользовательский элемент управления в виде всплывающего окна с помощью диалогового окна jQuery на странице ASPX. - PullRequest
0 голосов
/ 10 февраля 2012

Я пытаюсь открыть пользовательский элемент управления (Memo.ascx) в виде всплывающего окна с помощью диалога jQuery на странице Aspx.

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 ]

3 голосов
/ 10 февраля 2012

У вас есть две проблемы, одну из которых вы устанавливаете OnClientClick = "OpenMemo ()", но я не вижу определенной функции javascript OpenMemo (). Похоже, у вас уже есть обработчик кликов для "btnMemo", поэтому ваш OnClientClick = "OpenMemo" должен быть удален.

Ваша вторая проблема

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

Эта строка не будет работать. Метод загрузки должен иметь URL-адрес, по которому он может получить содержимое. Вам нужно будет обернуть Memo.ascx в файл aspx, а затем вызвать load с URL-адресом файла aspx. Если вам нужно только содержимое Memo.ascx, выберите элемент, который он инкапсулирует после завершения вызова.

1 голос
/ 10 февраля 2012

Не существует функции javascript, называемой OpenMemo () (поскольку в соответствии с соглашением сторон имена функций начинаются с нижнего регистра)

Попробуйте создать функцию, подобную следующей:

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