44

UpdatePanel内にボタンがあります。このボタンは、ModalPopupExtenderの[OK]ボタンとして使用されています。何らかの理由で、ボタンクリックイベントが発生していません。何か案は?私は何かが足りないのですか?

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

8 に答える 8

53

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
    }

また、OK ボタンを OkControlID として設定しないでください。

于 2009-07-22T17:23:37.700 に答える
9

ModalPopupExtenderの[OK]または[キャンセル]ボタンとして使用されているボタンは、クリックイベントを持つことができないようです。私はこれを削除してテストしました

OkControlID="ModalOKButton"

ModalPopupExtenderタグから、ボタンクリックが発生します。データをサーバーに送信する別の方法を理解する必要があります。

于 2008-09-27T01:00:11.030 に答える
8

また、ボタンにCausesValidation="false"が必要な場合もあります。それは私のために働いた。

于 2009-06-10T12:18:59.923 に答える
6

私はちょうどこれに対する解決策を探していました:)

コントロールがイベントを発生させたい場合、OkControlIDをコントロールに割り当てることはできないようです。このプロパティを削除するだけで、すべてが再び機能するようになりました。

私のコード(作業中):

<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" />
于 2008-12-21T00:00:47.510 に答える
4

Button-Control に属性「UseSubmitBehavior=false」を入れます。

于 2010-02-12T15:49:41.890 に答える
2

私はよく TargetControlID として空白のラベルを使用します。元。<asp:Label ID="lblghost" runat="server" Text="" />

クリック イベントが発生しない原因が 2 つあります
。 1. OKControlID を削除する必要があります (他の人が言及しているように)

どちらのシナリオも、私にとっては同じように動作しました。

于 2010-11-24T18:09:45.023 に答える
2

以前の答えはどれもうまくいきませんでした。OnOkScript イベントでボタンのポストバックを呼び出しました。

<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>   
于 2009-01-28T11:17:18.990 に答える
1

ポストバックなしで modalpopup を検証する方法を見つけました。

ModalPopupExtender で OnOkScript を ValidateBeforePostBack() などの関数に設定し、その関数で必要な検証グループに対して Page_ClientValidate を呼び出し、チェックを行い、失敗した場合は modalpopup を表示したままにします。合格した場合は、 を呼び出します__doPostBack

function ValidateBeforePostBack(){ 
     Page_ClientValidate('MyValidationGroupName'); 
     if (Page_IsValid) { __doPostBack('',''); } 
     else { $find('mpeBehaviourID').show(); } 
}
于 2016-06-09T01:07:13.857 に答える