Frage

Ich habe einen Knopf in einem Update. Die Taste wird als OK-Taste für eine ModalPopupExtender verwendet. Aus irgendeinem Grund wird die Schaltfläche Click-Ereignis nicht ausgelöst. Irgendwelche Ideen? Bin ich etwas fehlt?

<asp:updatepanel id="UpdatePanel1" runat="server">
    <ContentTemplate>
        <cc1:ModalPopupExtender ID="ModalDialog" runat="server" 
            TargetControlID="OpenDialogLinkButton"
            PopupControlID="ModalDialogPanel" OkControlID="ModalOKButton"
            BackgroundCssClass="ModalBackground">
        </cc1:ModalPopupExtender>
        <asp:Panel ID="ModalDialogPanel" CssClass="ModalPopup" runat="server">
            ...
            <asp:Button ID="ModalOKButton" runat="server" Text="OK" 
                        onclick="ModalOKButton_Click" />
        </asp:Panel>
    </ContentTemplate>
</asp:updatepanel>
War es hilfreich?

Lösung

Aspx

<ajax:ModalPopupExtender runat="server" ID="modalPop" 
            PopupControlID="pnlpopup" 
            TargetControlID="btnGo"
              BackgroundCssClass="modalBackground"
             DropShadow="true"
             CancelControlID="btnCancel" X="470" Y="300"   />


//Codebehind    
protected void OkButton_Clicked(object sender, EventArgs e)
    {

        modalPop.Hide();
        //Do something in codebehind
    }

und setzen Sie nicht auf die Schaltfläche OK als OkControlID.

Andere Tipps

Es scheint, dass ein Knopf, der als OK oder Abbrechen-Taste für eine ModalPopupExtender verwendet wird, kann nicht ein Click-Ereignis hat. Getestet habe ich diese aus, indem Sie die

OkControlID="ModalOKButton"

aus dem ModalPopupExtender-Tag, und die Taste, um Feuer. Ich brauche, um einen anderen Weg finden, um die Daten an den Server zu senden.

Es könnte auch sein, dass die Schaltfläche haben muss Causes = "false". Das ist für mich gearbeitet.

Ich habe nur die Suche nach einer Lösung für dieses:)

es scheint, dass Sie nicht haben können OkControlID , um eine Steuer zuweisen, wenn Sie zu, dass Steuer Feuer ein Ereignis wollen, gerade diese Eigenschaft zu entfernen Ich habe alles wieder funktioniert.

mein Code (in Betrieb):

<asp:Panel ID="pnlResetPanelsView" CssClass="modalPopup" runat="server" Style="display:none;">
    <h2>
        Warning</h2>
    <p>
        Do you really want to reset the panels to the default view?</p>
    <div style="text-align: center;">
        <asp:Button ID="btnResetPanelsViewOK" Width="60" runat="server" Text="Yes" 
            CssClass="buttonSuperOfficeLayout" OnClick="btnResetPanelsViewOK_Click" />&nbsp;
        <asp:Button ID="btnResetPanelsViewCancel" Width="60" runat="server" Text="No" CssClass="buttonSuperOfficeLayout" />
    </div>
</asp:Panel>
<ajax:ModalPopupExtender ID="mpeResetPanelsView" runat="server" TargetControlID="btnResetView"
    PopupControlID="pnlResetPanelsView" BackgroundCssClass="modalBackground" DropShadow="true"
    CancelControlID="btnResetPanelsViewCancel" />

Setzen Sie in die Button-Control das Attribut "UseSubmitBehavior = false".

Keine der bisherigen Antworten für mich gearbeitet. Ich rief die Postbacks der Taste auf dem OnOkScript Ereignisse.

<div>
    <cc1:ModalPopupExtender PopupControlID="Panel1" 
         ID="ModalPopupExtender1"
         runat="server" TargetControlID="LinkButton1" OkControlID="Ok" 
         OnOkScript="__doPostBack('Ok','')">
    </cc1:ModalPopupExtender>

    <asp:LinkButton ID="LinkButton1" runat="server">LinkButton</asp:LinkButton> 
</div>        


<asp:Panel ID="Panel1" runat="server">
    <asp:Button ID="Ok" runat="server" Text="Ok" onclick="Ok_Click" />            
</asp:Panel>   

Ich benutze oft ein leeres Etikett als TargetControlID. Ex. <asp:Label ID="lblghost" runat="server" Text="" />

Ich habe zwei Dinge gesehen, die das Click-Ereignis nicht Feuer verursachen:
1. Sie die OKControlID entfernen müssen (wie andere erwähnt haben)
2. Wenn Sie mit Feldvalidatoren sollten Sie Causes = „false“ auf die Schaltfläche hinzufügen.

Beide Szenarien verhielten sich genauso für mich.

Ich habe einen Weg gefunden, eine Modalpopup ohne Postbacks zu überprüfen.

In der ModalPopupExtender ich die OnOkScript auf eine Funktion, z ValidateBeforePostBack () gesetzt ist, dann in der Funktion nenne ich Page_ClientValidate für die Validierung Gruppe ich will, tun einen Scheck und wenn es scheitert, halten Sie die Modalpopup zeigt. Wenn es passiert, nenne ich __doPostBack.

function ValidateBeforePostBack(){ 
     Page_ClientValidate('MyValidationGroupName'); 
     if (Page_IsValid) { __doPostBack('',''); } 
     else { $find('mpeBehaviourID').show(); } 
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top