如何动态自动调整sharepoint模式对话框?

时间:2013-01-09 10:26:44

标签: sharepoint

我在sharepoint中创建了一个Web应用程序,该应用程序有一个登录链接,可以在点击时在模态窗口中加载登录webpart。我还没有通过选项设置模态弹出的高度,但我只设置了它的宽度。

IE 7,8和9根据我的需要加载webpart,并在加载时自动调整其高度。但Firefox(在Chrome中进行测试)会加载webpart,但不会自动调整高度以适应登录WP。

我尝试使用SP.UI.ModalDialog.get_childDialog()。autoSize(),如下所示

ExecuteOrDelayUntilScriptLoaded(function () {
SP.UI.ModalDialog.get_childDialog().autoSize();
}, "sp.ui.dialog.js");

但这对Firefox也不起作用。当我在登录屏幕上显示错误时,在IE中调用autoSize非常有效但在FF上它返回高度小于20px并且模态弹出窗口似乎有宽度但高度小于20。

如何解决此问题?

请帮忙。

很抱歉,如果我看起来像个菜鸟那么。

提前致谢

3 个答案:

答案 0 :(得分:1)

我认为您需要在创建对话框之前设置属性autoSize

var options = SP.UI.$create_DialogOptions();
options.autoSize = true;
...
SP.UI.ModalDialog.showModalDialog(options);

希望这有帮助。

答案 1 :(得分:0)

我本人正试图解决一个类似问题。我想覆盖宽度,因为我的内容包含在一个不受欢迎的行为中。我发现以下内容允许我在显示对话框后调整宽度。

ExecuteOrDelayUntilScriptLoaded(function () {
  var dialog = SP.UI.ModalDialog.get_childDialog();
  dialog.$2_0.autoSizeStartWidth = 1100;
  dialog.autoSize();
}, "sp.ui.dialog.js");

我刚将它添加到脚本编辑器webpart中,作为显示表单部分的一部分,它就像一个梦想。

答案 2 :(得分:0)

我有类似的问题,但由于某种原因,autoSize()对我来说不起作用,所以我开始挖掘,并在使用jQuery显示模型窗口高度之后编写了解决方法。

var dlg = SP.UI.ModalDialog.get_childDialog();
var header = $(dlg.$I_0)
var userRoot = $(dlg.$L_0);
var frameContainer = $(dlg.$1Z_0);

var headerContentHeight = header.height();
var headerMargin = header.cssUnit("margin")[0] * 2;
var headerPadding = header.cssUnit("padding")[0] * 2;
var headerHeight = headerContentHeight + headerMargin + headerPadding;
var frameContainerPadding = Math.ceil(($(dlg.$7_0).height() - userRoot.height() - headerHeight) / 2);

//frame container
$(dlg.$1Z_0).height(height - headerHeight - frameContainerPadding);

//background white space
$(dlg.$4_0).height(height);

//border
$(dlg.$1H_0).height(height);

//root of user html
userRoot.height(height - headerHeight - frameContainerPadding);

//frame
$(dlg.$7_0).height(height);

//center the window
$('.ms-dlgContent').css('top', $(window).scrollTop() + ((($(window).height() - $('.ms-dlgContent').height()) / 2) - 30) + "px");

请记住,窗口的实际高度大于对话框选项中的高度。此函数将设置对话框窗口的实际高度以匹配新高度。

也许这个解决方案可以帮助其他人,解决这个问题。这都是修改样式,因此它不应该是一个问题,但它是一种" hack"所以它可能是错误的。