modalpopupextender.Show() wont fire
- by Peter Lea
I'm pretty new to developing for the web so bare with me. I have a company page with multiple locations and emails etc at each of these addresses. The idea is to have a single modalpopup to edit each type of data (one for email, one for urls, one for addresses etc).
I link the modalpopupextender to a hiddenbutton and then call an edit function from various places where I can populate some hiddenfields and textboxes in the panel before showing it. The code executes but it just wont show the damn popup, I just see a flash and can't figure out if its my panel, my css or something I don't understand about ajax and postbacks etc.
Things i've tried after reading various threads:
Disable smart navigation in web.config
Move ToolKitScriptManager up to master page and use proxy in content
set hiddenbutton to use style="display:none"
tried links etc instead of hidden button
Heres my code
CSS
.modalBackground
{
position: absolute;
z-index: 100;
top: 0px;
left: 0px;
background-color: #000;
filter: alpha(opacity=60);
-moz-opacity: 0.6;
opacity: 0.6;
}
.modalPopup {
background-color: #FFD;
border-width: 3px;
border-style: solid;
border-color: gray;
padding: 3px;}
Asp/html
<ajaxToolkit:ModalPopupExtender runat="server" ID="mpe_email" BackgroundCssClass="modalBackground" PopupControlID="modal_email" CancelControlID="btn_cancel_email" TargetControlID="fake_btn_email" />
<asp:Button ID="fake_btn_email" runat="server" Text="email" style="display:none;" />
<asp:panel id="modal_email" runat="server" class="modalPopup" Width="500px" Height="500px">
<asp:HiddenField ID="hf_modal_email_location_id" runat="server" Value="" />
<asp:HiddenField ID="hf_modal_email_contact_id" runat="server" Value="" />
<asp:HiddenField ID="hf_modal_email_comms_id" runat="server" Value="" />
<table width="100%">
<tr>
<td>
<asp:Label ID="lbl_mpe_email_title" runat="server" Text="Edit Email Address" />
</td>
</tr>
<tr>
<td>
<table width="100%">
<tr>
<td width="40px"><img src="../images/email.png" height="30px" width="30px"/></td>
<td>
<table width="100px">
<tr>
<td><span>Quick Ref: <asp:TextBox ID="txb_mpe_email_qref" runat="server" Text="" /></span></td>
</tr>
<tr>
<td><span>Email Address: <asp:TextBox ID="txb_mpe_email_address_full" runat="server" Text="" /></span></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="40px" align="left"><asp:Button ID="btn_cancel_email" runat="server" Text="Cancel"/></td>
<td align="right"><asp:Button ID="btn_save_email" runat="server" Text="Save" OnCommand="save_modal_email" /></td>
</tr>
<tr>
<td colspan="2" align="right"><asp:Label ID="lbl_mpe_email_err" runat="server" Text="" /></td>
</tr>
</table>
c#
public void oloc_ocon_email_edit(object sender, RepeaterCommandEventArgs e)
{
switch (e.CommandName)
{
case "edit":
hf_modal_email_location_id.Value = ((HiddenField)e.Item.FindControl("hf_oloc_ocon_emails_location_id")).Value;
hf_modal_email_contact_id.Value = ((HiddenField)e.Item.FindControl("hf_oloc_ocon_emails_contact_id")).Value;
hf_modal_email_comms_id.Value = ((HiddenField)e.Item.FindControl("hf_oloc_ocon_emails_comms_id")).Value;
lbl_mpe_email_title.Text = "Edit Email Address";
txb_mpe_email_qref.Text = ((HiddenField)e.Item.FindControl("hf_oloc_ocon_emails_qref")).Value;
txb_mpe_email_address_full.Text = ((HiddenField)e.Item.FindControl("hf_oloc_ocon_emails_email_full")).Value;
lbl_mpe_email_err.Text = "";
mpe_email.Show();
break;
case "new":
hf_modal_email_location_id.Value = ((HiddenField)e.Item.FindControl("hf_oloc_ocon_emails_location_id_p")).Value;
hf_modal_email_contact_id.Value = ((HiddenField)e.Item.FindControl("hf_oloc_ocon_emails_contact_id_p")).Value;
hf_modal_email_comms_id.Value = "0";
lbl_mpe_email_title.Text = "New Email Address";
txb_mpe_email_qref.Text = "";
txb_mpe_email_address_full.Text = "";
lbl_mpe_email_err.Text = "";
mpe_email.Show();
break;
}
}
Stuff makes so much more sense in a desktop environment, I hope someone can point me in the right direction. Thanks