1

在我的 ASP.NET Web 表单页面中,我有一个ModalPopupExtender由 JavaScript 显示的:

$.ajax({
    // full ajax request shortened
    type: "POST",
    success: function (msg) {
        $("#profileTitleLabel").html(msg.d.TitleEncoded);
        $("#profileTextLabel").html(msg.d.BodyEncoded);

        $find('profileTextModalPopupExtender').show();
    },
    error: function (jqXHR, textStatus, errorThrown) {
    }
});

第一次它既不是居中也不是大小,但在随后的调用中它很好(在 Chrome、Firefox 和 IE9 中)。我想这与关闭它时完成的回发有关(UpdatePanel部分更新)。

现在如何在不使用服务器端调用的情况下手动触发大小以使其第一次正确大小Showinitialize我之前尝试过调用show,我浏览了客户端对象的方法,但我还没有找到解决方案。

以下是与弹出窗口匹配的样式div

height: auto;    // matched css classes
width: auto;
max-height: 80%;
max-width: 90%;
min-width: 50%;
overflow: auto;
padding: 10px;
position: fixed; // element CSS
z-index: 100001;
left: 160.5px;
top: 157.5px;
4

1 回答 1

1

我找到了使弹出窗口正确显示的解决方法:

$find('profileTextModalPopupExtender').show();
$find('profileTextModalPopupExtender')._layout();
$find('profileTextModalPopupExtender').show();

我同意这有一种代码味道。但是,我找不到更好的解决方案(我仍然愿意接受建议)。我特别不喜欢_layout被调用三次,一次由我自己调用,两次(连续!)由show.

于 2012-08-28T09:17:33.070 回答