问题描述
|
我正在使用ModalPopupExtender。按钮的Onclick(是ModalPopupExtender的TargetControlID),调用javascript检查某些条件。我的要求是,我只想在某些条件为真时才显示弹出窗口,否则将其隐藏。
这是代码。隐藏功能在这里不起作用。即使调用hide()也会出现弹出窗口。
function ShowAlert()
{
if (selBtn == \"\" || selBtn == null)
{
alert(\"Please select scrip/scheme first\");
var modalPopup = $find(\'<%=ModalPopupExtender2.ClientID %>\');
if (modalPopup != null)
{
modalPopup.hide();
}
return false;
}
}
-----------------------------------------------
<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
<tr>
<td valign=\"top\" align=\"center\">
<asp:Button ID=\"btnSet\" runat=\"server\" Text=\"Set Alerts\" OnClientClick=\"ShowAlert();\" />
<cc1:ModalPopupExtender ID=\"ModalPopupExtender2\" runat=\"server\" BehaviorID=\"ModalBehavIoUr2\" TargetControlID=\"btnSet\" PopupControlID=\"pnlPopupU\" DropShadow=\"false\" X=\"100\" Y=\"200\" BackgroundCssClass=\"Inactive\"></cc1:ModalPopupExtender>
</td>
</tr>
</table>
解决方法
我有类似的情况,无法使用Javascript。
相反,我在服务器端进行了条件检查和modalpopup显示。解决方案不像使用客户端JavaScript那样干净,但是至少我可以正常使用并继续进行下去。
If Condition == true then modalPopUp.Show()
在面板pnlPopU中,放置一个按钮(CancelControlID为modalpopupextender),然后向其添加onclientclick事件以隐藏弹出窗口。
var modalPopup = $find(\'<%=ModalPopupExtender2.ClientID %>\');
modalPopup.hide();
编辑:
另一个解决方法:
1)添加一个隐藏按钮(显示:无)并将其分配给modalPE \的TargetControlID
2)在btnSet客户端单击事件上,进行条件检查,如果满足条件,则执行隐藏的按钮单击事件(触发modalPE)
, 在后面的代码中,您可以执行以下操作:
if (true)
{
var script = @\"Sys.Application.add_load(function() { $find(\'behavoirIDModal\').show(); });\";
ScriptManager.RegisterStartupScript(this,GetType(),\"ShowPopup\",script,true);
}
在aspx中,您将执行以下操作:
<asp:Panel runat=\"server\" ID=\"pnlSalvo\">
<asp:Button ID=\"btnClose\" runat=\"server\" Text=\"Fechar\" />
</asp:Panel>
<ajaxToolkit:ModalPopupExtender ID=\"ModalResultado\" BehaviorID=\"acao\" runat=\"server\" PopupControlID=\"pnlSalvo\"
TargetControlID=\"btnShow\"
CancelControlID=\"btnClose\">
</ajaxToolkit:ModalPopupExtender>
<asp:Button ID=\"btnShow\" runat=\"server\" Text=\"Modal\" Visible=\"true\" />