I have this page where in i have a ModalPopupExtender. Now the panel that shows up as a Mo开发者_开发知识库dalPopup has 2 buttons namely "Invite" and "Cancel". My problem is that when i click on either of the buttons postback does not occur and i am unable to run my server side code.
When i click on the "Invite" button it simply hides the ModalPopupExtender control and does nothing!!
<asp:ModalPopupExtender ID="mpeInviteFriend" runat="server"
TargetControlID="lbInvite" PopupControlID="pnlInviteFriend"
OkControlID="btnInvite" CancelControlID="btnCancel"
BackgroundCssClass="diabledBackground" Y="100"></asp:ModalPopupExtender>
<asp:Panel ID="pnlInviteFriend" runat="server">
<div class="popUpBoxBackground" style="height:230px; width: 400px">
<div class="popUpBox">
<div class="popUpHeader">
<b>Invite a Friend</b>
</div>
<div class="popUpBody" style="height:210px">
<div style="padding: 10px">
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td>You have chosen to invite your friend to join this community.</td>
</tr>
<tr>
<td style="padding: 8px 0px 0px 0px">Email address of your friend:</td>
</tr>
<tr>
<td style="padding: 4px 0px 5px 0px" align="right">
<asp:TextBox ID="TextBox1" runat="server"
TextMode="MultiLine" CssClass="inputTextbox"
Width="99%" Height="28px"></asp:TextBox>
<span class="smallInfoText" style="color: #000">In case you want to invite more than 1 friend, separate their mail id with a ;</span>
</td>
</tr>
<tr>
<td style="padding: 4px 0px 0px 0px">Would you like to add a personal note?</td>
</tr>
<tr>
<td style="padding: 4px 0px 5px 0px" align="right">
<asp:TextBox ID="txtInvitationText" runat="server"
TextMode="MultiLine" CssClass="inputTextbox"
Width="99%"></asp:TextBox>
<span class="smallInfoText" style="color: #000">If not then leave it blank and we will take care of the note : )</span>
</td>
</tr>
<tr>
<td align="right">
<asp:Button ID="btnInvite" runat="server" OnClick="btnInvite_Click" Text="Invite" style="margin-right: 10px" Width="60px" />
<asp:Button ID="btnCancel" runat="server" OnClick="btnCancel_Click" Text="Cancel" Width="60px" />
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</asp:Panel>
Please help.
Thank you.
Take out this part of your markup:
OkControlID="btnInvite" CancelControlID="btnCancel"
Update after comment:
In the initialization phase, client side, this piece of code gets executed:
if (this._OkControlID) {
this._okHandler = Function.createDelegate(this, this._onOk);
$addHandler($get(this._OkControlID), 'click', this._okHandler);
}
So basically it creates a handler towards the _onOK function:
_onOk: function(e) {
/// <summary>
/// Handler for the modal dialog's OK button click
/// </summary>
/// <param name="e" type="Sys.UI.DomEvent">
/// Event info
/// </param>
var element = $get(this._OkControlID);
if (element && !element.disabled) {
if (this.hide() && this._OnOkScript) {
window.setTimeout(this._OnOkScript, 0);
}
e.preventDefault();
return false;
}
},
as you can see it calls e.preventDefault(); which causes the normal behavior of the OKControl to not go through while this.hide() will close the modal popup itself.
I suggest you read the ModalPopupBehavior.debug.js from the control toolkit if you want to know more.
Don't assign the ok control, so event will work fine.
Also it works for cancel control just don't assign them.
精彩评论