我正在尝试在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,但是在我做之前想先检查。
非常感谢
答案 0 :(得分:1)
您需要将对话框附加到表单才能触发事件。通过添加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();
}
答案 1 :(得分:0)
问题是当您将服务器控件放在jQuery弹出窗口中时,它将从form runat="server"
中删除控件并将其放在窗体之外..
因为你的控件不在form runat="server"
内,服务器端的事件不会触发。
此类问题的一种解决方法是在加载usercontrol后显式克隆包装并将其附加到form runat="server"
。这应该可以解决你的问题..
您可以使用Firebug或弹出窗口外的任何开发人员工具进行检查..