2013-09-10 11 views
13

Przeszukałem już Internet i wypróbowałem kilka dostarczonych rozwiązań, ale żadna z nich nie działa dla mnie.Nie można kliknąć przycisku asp.net w oknie dialogowym jquery

Mam przycisk w dziale div. Wyświetlam element div w oknie dialogowym jquery. Kliknięcie przycisku nie działa w oknie dialogowym jquery.

mam mojego kodu poniżej:

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); 
     } 
    } 

Proszę dać mi znać, co muszę zrobić, wyzwolić kontr. serwera ol wydarzenia.

+0

Nie powinno to wydarzenie onClick mieć btnConfigureAlerts_Click()? Dlaczego po prostu nie użyjesz normalnego przycisku html, jeśli chcesz tylko wywołać funkcję javascript? –

+0

Wierzę, że chce wywołać kod z tyłu przycisku w oknie dialogowym jquery. Myślę, że Twój identyfikator przycisku musi być "btnConfigureAlerts". – ElliotM

+0

Sprawdź, czy na konsoli nie występują błędy javascript. –

Odpowiedz

22

Też miałem ten problem z przyciskami asp.net i jQuery UI Dialog. Aby go rozwiązać, musisz ustawić w swoim przycisku aspnet tag UseSubmitBehavior na false.

Jeśli atrybut UseSubmitBehavior jest ustawiony na prawdziwej (jest to wartość domyślna), przycisk użyje złożyć przeglądarki mechanizm (i jQuery Dialog UI jest manipulowanie go), jeśli UseSubmitBehavior jest ustawiony na fałszywy, przycisk użyje skryptu po stronie klienta, który framework asp.net zawiera na stronie, aby opublikować go w formularzu.

Więc HTML powinien wyglądać następująco:

<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> 

Więcej szczegółów na http://msdn.microsoft.com/library/system.web.ui.webcontrols.button.usesubmitbehavior.aspx

+0

Właśnie edytowałem swój kod.Proszę sprawdzić, mam dwa przyciski i myślę, że zdarzenie click button używane jest poprawne – CodeNinja

+0

@ Agent007 ok, dodałem przykład w mojej odpowiedzi. Mam nadzieję, że ci to pomoże. –

+0

Hej Dzięki to działa! Czy możesz mi również powiedzieć, w jaki sposób mogę użyć rozwijanej listy w oknie dialogowym jquery. Indeks DropdownList nie zmienia się obecnie. – CodeNinja

4

Jest to klasyczny, dzięki za przeniesienie mojego dialogowego jQuery pytanie.

jQuery UI z jakiegoś powodu przenosi kod okna dialogowego na dół znaczników html, poza tagiem formularza. Trzeba przenieść okno z powrotem do postaci z jakiegoś bardziej jQuery:

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

gdzie DLG jest Twój obiekt dialogowe jQuery.UI.

 var dlg = $("#ViewModalPopupDiv2").dialog({ 
      scrollable: true, 
      width: 800, 
      modal: true 
     }); 
     dlg.parent().appendTo(jQuery('form:first')); 

To powinno sprawić, że wszystko znów będzie działać. Twoje zdrowie!

Jeśli to nie zadziała, spróbuj robić to w otwartej imprezy:

open: function(type,data) { $(this).parent().appendTo("form"); }

+0

Hej TombMedia! Dziękuję Ci ! W jakiś sposób rozwiązanie nie działa. Zawijam powyższy kod w funkcję o nazwie function ViewModalPopup2(). Czy uważasz, że to by spowodowało problem? – CodeNinja

+0

Nie, to nie byłby problem. Cieszę się, że dostałeś to posortowane. – TombMedia

+0

Dzięki, rozwiązałam mój problem :) – Tanu

Powiązane problemy