Невозможно нажать кнопку asp.net в диалоговом окне jquery.
Я уже делал поиск в Интернете и пытался предоставить несколько решений, но ни один из них не работает для меня.
У меня есть кнопка в div. Я показываю div в диалоговом окне jquery. Щелчок кнопки не работает в диалоговом окне jquery.
У меня есть код ниже:
ASPX
<div id='one'>
<asp:LinkButton ID="ConfigureAlerts" OnClick="btnConfigureAlerts_Click" runat="server">Configure Alerts</asp:LinkButton>
</div>
<div id="ViewModalPopupDiv2">
<asp:UpdatePanel ID="UpdatePanel3" runat="server">
<ContentTemplate>
<asp:Panel ID="Panel2" runat="server" HorizontalAlign="left" ScrollBars="Auto">
<asp:Button ID="btnGetLogs" runat="server" Text="SendAlerts" OnClick="btnSendAlertEmail_Click"/>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</div>
jquery
function ViewModelPopup2() {
$("#ViewModalPopupDiv2").dialog({
scrollable: true,
width: 800,
modal: true
});
}
aspx.cs
protected void btnSendAlertEmail_Click(object sender, EventArgs e)
{
// Code to send email
}
protected void btnConfigureAlerts_Click(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript
(this, this.GetType(), "callScriptFunction", "ViewModelPopup2();", true);
}
}
Пожалуйста, дайте мне знать, что мне нужно сделать, чтобы инициировать события управления сервером.
Ответы
Ответ 1
У меня также была проблема с кнопками asp.net и диалоговым окном jQuery UI.
Чтобы решить эту проблему, вам нужно установить в своей кнопке aspnet тег UseSubmitBehavior
на false
.
Если для атрибута UseSubmitBehavior
установлено значение true (это значение по умолчанию), кнопка будет использовать механизм отправки браузера (и пользовательский интерфейс jQuery Dialog работает с ним), если UseSubmitBehavior
установите false, кнопка будет использовать клиентскую часть script, которую инфраструктура asp.net включает на странице для отправки в форму.
Итак, ваш HTML должен выглядеть следующим образом:
<div id='one'>
<asp:LinkButton ID="ConfigureAlerts" OnClick="btnConfigureAlerts_Click" runat="server">Configure Alerts</asp:LinkButton>
</div>
<div id="ViewModalPopupDiv2">
<asp:UpdatePanel ID="UpdatePanel3" runat="server">
<ContentTemplate>
<asp:Panel ID="Panel2" runat="server" HorizontalAlign="left" ScrollBars="Auto">
<asp:Button ID="btnGetLogs" runat="server" Text="SendAlerts" OnClick="btnSendAlertEmail_Click" UseSubmitBehavior="false" />
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</div>
Подробнее на http://msdn.microsoft.com/library/system.web.ui.webcontrols.button.usesubmitbehavior.aspx
Ответ 2
Это классика, спасибо за перевод моего диалога jQuery, вопрос.
jQuery UI по какой-либо причине перемещает ваш код диалога в нижней части разметки html, вне вашего тега формы. Вам нужно переместить диалог обратно в форму с помощью еще одного jQuery:
dlg.parent().appendTo(jQuery('form:first'));
где dlg - это ваш диалоговый объект jQuery.UI.
var dlg = $("#ViewModalPopupDiv2").dialog({
scrollable: true,
width: 800,
modal: true
});
dlg.parent().appendTo(jQuery('form:first'));
Это должно заставить вас работать снова. Ура!
Если это не сработает, попробуйте сделать это в открытом событии:
open: function(type,data) { $(this).parent().appendTo("form"); }