1

我试图在 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,但在我这样做之前想先检查一下。

非常感谢

4

2 回答 2

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: function (event, ui) {
                    $(this).remove();
                    }
于 2012-10-09T20:24:49.997 回答
0

The problem is when you put the server controls in the jQuery popup it will remove the controls from the form runat="server" and place it outside the form..

So because your controls are not inside the form runat="server" the server side events will not fire.

One workaround for this kind of issues is explicitly clone the wrapper after the usercontrol is loaded and append it to the form runat="server" . This should solve your problem..

You can check this with Firebug or any developer tools that the popup will be outside the form..

于 2012-10-09T20:01:35.123 回答