Кнопка не выполняет обратную передачу в диалоге jQuery внутри UC
-
05-07-2019 - |
Вопрос
Я разрабатываю пользовательский элемент управления, и у него есть кнопка asp.net в диалоге jQuery, но когда я нажимаю кнопку, ничего не происходит, я имею в виду, что она не вызывает событие нажатия кнопки на стороне сервера, я пытался
dlg.parent().appendTo(jQuery("form:first"));
но мне это тоже не помогло, возможно ли добиться этого внутри asp.net UserControl? Также мне интересно, могу ли я использовать UpdatePanel внутри диалога или нет?
Решение
Вы можете сделать кнопку диалоговой кнопкой и поместить кнопку 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 на стороне сервера будет срабатывать при нажатии кнопки диалога
Надеюсь, это поможет мне постоянно использовать этот шаблон
Другие советы
Я подозреваю, что это может быть связано с тем, что ASP.NET не может найти кнопку в форме.
Используйте настройку события .live в jQuery - привяжите событие, прежде чем создавать диалог с использованием .live, и оно должно работать ...
В результате вы получите что-то подобное в вашей функции document.ready:
$("#btn").live("click", function(){
// Do something
});
$("#dialog").dialog({
...
}
У меня была такая же проблема. Я закончил тем, что вытащил кнопку из диалогового окна, скрыл ее с помощью css, а затем вызвал ее из события закрытия диалогового окна (позже я собираюсь сделать это более аккуратно, но, по крайней мере, это иллюстрирует проблему). р>