在列表的 AllItems 页面上,我在显示列表的 Web 部件上方添加了一个内容编辑器 WebPart。此 Web 部件仅包含一个 HTML 按钮。当用户单击按钮时,列表中的所有项目将由几个 JavaScript/jQuery/AJAX 函数处理。但是该列表包含 1000 多个项目,不让他们知道代码正在处理这些项目是不友好的。
首先,出于开发目的,我在方法之间使用警报来显示某种交互性并为用户提供信息。但现在我正在使用 jQuery 模态对话框以一种很好的方式向用户展示代码正在处理项目。
对话框已显示,但不在屏幕中央,标题栏未显示在对话框的整个宽度上,透明灰色覆盖层不可见。我在一个空的 ASP.NET Web 应用程序中测试了完全相同的代码,在这种情况下一切正常。
我正在使用 jQuery 1.8.2 和 jQuery UI 1.10.1。无论如何,这就是我所拥有的:
function showProcessDialog() {
showDialog("Please wait while processing all items...", null);
}
function showDialog(message, dialogButtons) {
$("#messageContainer").text(message);
$('#dialog-message').parent().appendTo($('form:first'));
$("#dialog-message").dialog({
draggable: false,
height: "auto",
modal: true,
open: function (event, ui) { $(".ui-dialog-titlebar-close").hide(); },
position: { my: "center", at: "center", of: window },
resizable: false,
width: 400,
buttons: dialogButtons
});
}
注意这一行:
$('#dialog-message').parent().appendTo($('form:first'));
我读到,当在 SharePoint 2007 中加载页面时,jQuery 会操纵 DOM,并且将充当对话框的 div 元素放置在正文的外部。最大的问题是对话框中的服务器端控件将不再起作用,并且此行将 div 放回表单中。我把它留在那里是因为你永远不知道...
这是 ASP.NET Web 应用程序中的结果:
这是 SharePoint 2007 中的相同代码:
有谁知道我该如何解决这个问题,以便结果与工作结果相同?提前致谢!