C# 要在站点上打开的模式对话框,而不是每个链接
我有一个网站集,其中有几个子网站集/子网站,其中一些“新项目”链接在模式对话框中打开,而一些没有打开。据我所知,在模式对话框中打开的行为是默认的SP2010设置。然而,一些定制解决方案提供了非常不一致的体验C# 要在站点上打开的模式对话框,而不是每个链接,c#,javascript,sharepoint-2010,C#,Javascript,Sharepoint 2010,我有一个网站集,其中有几个子网站集/子网站,其中一些“新项目”链接在模式对话框中打开,而一些没有打开。据我所知,在模式对话框中打开的行为是默认的SP2010设置。然而,一些定制解决方案提供了非常不一致的体验 是否有一个C#或配置解决方案可以强制在范围大于每个链接的新项目上进行模态对话?我不是真的在寻找OOTB解决方案,只是一个一般的解决方案。我设法在母版页中为我编写了一个脚本 <script type="text/javascript"> function addNewIte
是否有一个C#或配置解决方案可以强制在范围大于每个链接的新项目上进行模态对话?我不是真的在寻找OOTB解决方案,只是一个一般的解决方案。我设法在母版页中为我编写了一个脚本
<script type="text/javascript">
function addNewItemFix() {
$(".ms-addnew").each(function () {
if ($(this).is("a")) {
var gReference = $(this).attr("href");
var options = {
title: "New Item",
url: gReference
};
$(this).attr("onclick", "javascript:SP.UI.ModalDialog.showModalDialog({title: 'New Item',url:'" + gReference + "'}); return false;");
}
});
}
_spBodyOnLoadFunctionNames.push("addNewItemFix");
</script>
函数addNewItemFix(){
$(“.ms addnew”)。每个(函数(){
如果($(此).is(“a”)){
var grereference=$(this.attr(“href”);
变量选项={
标题:“新项目”,
url:greeference
};
$(this.attr(“onclick”,“javascript:SP.UI.ModalDialog.showModalDialog({title:'newitem',url:'“+grereference+”});返回false;”;
}
});
}
_spBodyOnLoadFunctionNames.push(“addNewItemFix”);
这将查找类.ms addnew
的每个实例,SP2010将该类放在TD和锚定标记上。对于每个.ms addnew
,它将只查找锚定,抓取href属性,然后重新格式化以执行模式对话框
工作起来很有魅力,不过请确保在放入此脚本之前调用core.js
或init.js
,因为它使用\u spBodyOnLoadFunctionNames
方法
此脚本已测试,应作为副本/粘贴使用。在模式对话框中打开的是列表设置。请参阅“列表设置”->“高级设置”->“在弹出窗口中打开”。这是否适用于“添加新项目”的每个实例的整个站点?如果更改列表设置,它将仅适用于相关列表。OOTB无法将此设置应用于整个站点。如果您有自定义母版页,您可以考虑使用javascript的一些选项。