2013-09-10 2 views
13

Ich habe bereits online gesucht, und versuchen Sie ein paar Lösungen zur Verfügung gestellt, aber keiner von ihnen funktioniert für mich.Kann nicht auf eine asp.net-Schaltfläche in einem jquery Dialogfeld klicken

Ich habe eine Schaltfläche innerhalb einer div. Ich zeige das div in einem jquery Dialog an. Der Knopfklick funktioniert nicht im jquery Dialog.

Ich habe meinen Code unten:

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

mich bitte wissen, was ich tun muss, den Server-Contr auszulösen ol Ereignisse.

+0

Sollte nicht Ihr onClick Ereignis hat btnConfigureAlerts_Click()? Warum benutzt du nicht einfach eine normale HTML-Schaltfläche, wenn du nur die JavaScript-Funktion aufrufen willst? –

+0

Ich glaube, sie möchte den Code hinter dem Button im jquery Dialog auslösen. Ich denke, Ihre Schaltfläche ID muss "btnConfigureAlerts" sein. – ElliotM

+0

Überprüfen Sie Ihre Konsole auf JavaScript-Fehler. –

Antwort

22

Ich hatte auch dieses Problem mit asp.net Schaltflächen und jQuery UI Dialog. Um es zu lösen, müssen Sie in Ihrer Aspnet-Taste das Tag UseSubmitBehavior zu false setzen.

Wenn UseSubmitBehavior Attribut wahr gesetzt ist (dies ist der Standardwert), wird der Button des Browser einreichen-Mechanismus verwenden (und jQuery Dialog UI es manipuliert), wenn UseSubmitBehavior zu falsch gesetzt, die Schaltfläche verwendet ein clientseitiges Skript, das das asp.net-Framework auf der Seite enthält, um es im Formular zu veröffentlichen.

So Ihre HTML so sein sollte:

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

Weitere Details unter http://msdn.microsoft.com/library/system.web.ui.webcontrols.button.usesubmitbehavior.aspx

+0

Ich habe gerade meinen Code bearbeitet.Bitte überprüfen Sie es, ich habe zwei Tasten, und ich denke, das Button-Klick-Ereignis, das ich verwende, ist korrekt – CodeNinja

+0

@ Agent007 ok, ich habe ein Beispiel in meiner Antwort hinzugefügt. Hoffe es hilft dir. –

+0

Hey Danke Das funktioniert! Kannst du mir auch sagen, wie ich eine Drop-Down-Liste im JQuery-Dialog verwenden kann? Der Dropdown-Listenindex ändert sich derzeit nicht. – CodeNinja

4

Dies ist die klassische, danke für meine Dialog jQuery Frage zu bewegen.

jQuery UI verschiebt Ihren Dialogcode aus irgendeinem Grund an den unteren Rand des HTML-Markups außerhalb des Formular-Tags. Sie müssen den Dialog wieder in die Form mit etwas mehr jQuery bewegen:

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

wo dlg ist Ihr jQuery.UI Dialog-Objekt.

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

Das sollte Dinge wieder für Sie arbeiten. Prost!

Wenn das nicht funktioniert, versuchen Sie, dass in der offenen Veranstaltung zu tun:

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

+0

Hallo TombMedia! Vielen Dank ! Irgendwie funktioniert die Lösung nicht. Ich wickle den obigen Code in eine Funktion namens function ViewModalPopup2(). Glaubst du, dass das das Problem verursachen würde? – CodeNinja

+0

Nein, das wäre überhaupt nicht das Problem. Freut mich zu sehen, dass du das sortiert hast. – TombMedia

+0

Danke, es hat mein Problem gelöst :) – Tanu

Verwandte Themen