#sharepoint-2010 #modalpopupextender
#sharepoint-2010 #modalpopupextender
Вопрос:
Я работаю с ModalPopupExtender. Onclick кнопки (которая является TargetControlID ModalPopupExtender), вызывает 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>
Ответ №1:
У меня была похожая ситуация, и я не смог заставить ее работать с Javascript. Вместо этого я выполнил проверку условий и отображение modalpopup на стороне сервера. Решение было не таким чистым, как с javascript на стороне клиента, но, по крайней мере, я заставил его работать и двигался дальше.
If Condition == true then modalPopUp.Show()
В вашей панели pnlPopU поместите кнопку (CancelControlID modalpopupextender) и добавьте к ней событие onclientclick, чтобы скрыть всплывающее окно.
var modalPopup = $find('<%=ModalPopupExtender2.ClientID %>');
modalPopup.hide();
Редактировать:
Еще один обходной путь:
1) Добавьте скрытую кнопку (отображение: отсутствует) и назначьте ее TargetControlID в modalPE
2) В событии щелчка на клиенте btnSet проверьте ваше условие, и если условие выполнено, затем запустите событие щелчка скрытой кнопки (которое запускает режим работы)
Ответ №2:
В коде, лежащем в основе, вы можете сделать:
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" />