可以在asp.net用户控件中使用jquery对话框吗?

时间:2012-10-09 19:56:40

标签: jquery asp.net jquery-ui jquery-ui-dialog

我正在尝试在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,但是在我做之前想先检查。

非常感谢

2 个答案:

答案 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或弹出窗口外的任何开发人员工具进行检查..