Кнопка не выполняет обратную передачу в диалоге jQuery внутри UC - PullRequest
1 голос
/ 11 сентября 2009

Я разрабатываю пользовательский элемент управления, и у него есть кнопка asp.net в диалоге jQuery, но когда я нажимаю кнопку, ничего не происходит, я имею в виду, что она не вызывает событие нажатия кнопки на стороне сервера, я попытался

dlg.parent().appendTo(jQuery("form:first")); 

но мне это тоже не помогло, возможно ли добиться этого внутри asp.net UserControl? Также мне интересно, могу ли я использовать UpdatePanel внутри диалога или нет?

Ответы [ 3 ]

3 голосов
/ 14 ноября 2009

Вы можете сделать кнопку диалоговой кнопкой и поместить на страницу кнопку asp.net с идентификатором HiddenButton и обернуть ее в элемент div в стиле display:none;

Так что кнопка не видна. (Не должно быть Visible = "false", поэтому кнопка отображается)

В диалоговом окне javascript добавьте кнопку с эффектом нажатия скрытой кнопки

  jQuery("#dialog").dialog({
        buttons: {
            'ButtonText': function() {
                //save the session
           __doPostBack('<%# HiddenButton.ClientID %>', '')
                jQuery(this).dialog('close');
            }
        }
    });

и добавьте обработчик щелчка asp к скрытой кнопке

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

Событие Click на стороне сервера будет срабатывать при нажатии кнопки диалога

Надеюсь, это поможет мне постоянно использовать этот паттерн

0 голосов
/ 27 мая 2011

У меня была такая же проблема. Я закончил тем, что вытащил кнопку из диалогового окна, скрыл ее с помощью css, а затем вызвал ее из события закрытия диалогового окна (позже я собираюсь сделать это более аккуратно, но, по крайней мере, это иллюстрирует проблему).

0 голосов
/ 12 сентября 2009

Я подозреваю, что это может быть связано с тем, что ASP.NET не может найти кнопку в форме.

Используйте настройку события .live в jQuery - привяжите событие, прежде чем создавать диалог с использованием .live, и оно должно работать ...

Живые события в jQuery

В результате вы получите что-то подобное в вашей функции document.ready:


$("#btn").live("click", function(){
  // Do something
});


$("#dialog").dialog({
    ... 
}
...