我试图在jquery对话框弹出窗口中打开一个用户控件,但当我这样做时,服务器端事件都不会触发,我猜UpdatePanels也会被禁用。
以前有没有人遇到过这个问题,有没有办法确保用户控件按预期工作?
这是我为它准备的代码。用户控件本身就是一个图像上传器,它有三个更新面板,以及一些带有服务器端单击事件的按钮/图像按钮。
<a href="#" id="imgDialog">Open Gallery</a>
<div id="ImagePopup" style="display:none">
<uc1:ImageGallery ID="ImageGallery1" ImageSectionID="1" runat="server" />
</div>
<script type="text/javascript">
$(document).ready(function () {
$("#imgDialog").click(, function (e) {
$('#ImagePopup').dialog({
bgiframe: true,
modal: true,
show: ("slide", { direction: "down" }, 200),
hide: ("slide", { direction: "up" }, 200),
showOpt: { direction: 'up' },
width: 700,
close: function (event, ui) {
}
});
e.preventDefault();
});
});
</script>我很乐意将控件移到aspx页面,如果需要的话,可以使用iframe,但我想在做之前先检查一下。
非常感谢
发布于 2012-10-10 04:24:50
您需要将对话框追加到窗体中,才能触发事件。通过添加以下代码中的appendTo行来完成此操作:
$("#imgDialog").click(, function (e) {
$('#ImagePopup').dialog({
bgiframe: true,
...........
close: function (event, ui) {
}
});
e.preventDefault();
$('#ImagePopup').parent().appendTo(jQuery("form:first"));
});我将Juery UI对话框与服务器控件一起使用,包括文件上传控件。我向你保证这是可能的。
我不确定,但您的对话框可能只会打开一次。如果发生这种情况,请尝试定义close函数,如下所示:
close: function (event, ui) {
$(this).remove();
}发布于 2012-10-10 04:01:35
问题是,当您将服务器控件放在jQuery弹出窗口中时,它会从form runat="server"中删除这些控件,并将其放在窗体之外。
因此,因为您的控件不在form runat="server"中,所以不会触发服务器端事件。
这类问题的一种解决方法是在加载用户控件后显式克隆包装,并将其附加到form runat="server"。这应该可以解决你的问题..
您可以使用Firebug或任何开发人员工具检查该弹出窗口是否在表单之外。
https://stackoverflow.com/questions/12807498
复制相似问题