我在许多页面上使用ajax ModalPopupExtender来显示确认对话框。
所以我想通过将它放在一个use控件中来重用所有页面上的相同代码。 但我不确定是否可以从javascript访问此用户控件(我不希望服务器端操作)。
这是负责弹出显示的代码,我想放在用户控件中:
<script language="javascript" type="text/javascript">
var _source;
var _popup;
var _btn;
var _div;
function showConfirm(source, btnID, theDiv) {
this._source = source;
this._btn = btnID;
this._div = theDiv;
document.getElementById(btnID).click();
document.getElementById(theDiv).style.visibility = 'visible';
}
function okClick() {
document.getElementById(_div).style.visibility = 'hidden';
__doPostBack(this._source.name, '');
}
function cancelClick() {
document.getElementById(_div).style.visibility = 'hidden';
this._source = null;
}
</script>
<cc1:ModalPopupExtender ID="modal" runat="server"
TargetControlID="theButton" PopupControlID="div"
OkControlID="btnOk" OnOkScript="okClick();" CancelControlID="btnNo"
OnCancelScript="cancelClick();" BackgroundCssClass="modalBackground" />
<div id="div" runat="server" align="center" class="confirm" style="display: none">
<img align="absmiddle" src="../images/warning.jpg" />Are you sure you want to delete this item?
</br>
<asp:Button ID="btnOk" runat="server" Text="Yes" Width="50px" />
<asp:Button ID="btnNo" runat="server" Text="No" Width="50px" />
</div>
在“托管”页面上,我想将JS分配给一个触发弹出窗口的按钮: 这是我现在的代码(应该用于用户控件):
string s = string.Format("showConfirm(this,'{0}','{1}');return false;", theButton.ClientID, div.ClientID);
btn.OnClientClick = s;
答案 0 :(得分:1)
可以从javascript调用模态弹出扩展器,因为模态弹出控件只是另一个DOM元素。您需要知道的是一个可以选择项目的选择器。
要从javascript“显示”你的模态弹出扩展程序,你需要做的就是在你的主页面,用户控件或页面中添加一些脚本,它显示了dom元素,它是模态弹出扩展器。
或者你可以使用一个javascript框架,它有许多其他样式的模态对话框,它们与ajax模式弹出扩展器相同(如果不是更多)有用。考虑到您不想使用ASP.NET的服务器端代码功能,这可能与您尝试实现的内容更为相关。