65.9K
CodeProject 正在变化。 阅读更多。
Home

SharePoint 自定义技巧 – 第 2 部分

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.10/5 (3投票s)

2009年1月24日

CPOL

2分钟阅读

viewsIcon

86964

downloadIcon

306

给 SharePoint 开发者的两个技巧 :)

引言

这篇系列文章旨在帮助您快速上手 SharePoint 定制。它涉及修改默认的 SharePoint 用户体验、列表表单定制、品牌化、美化 SharePoint 门户等。在 第 1 部分 中,我们介绍了一个通用函数,可以用于隐藏列表视图工具栏菜单项(例如,新建项目、上传、在网格视图中编辑等)。如果您还没有阅读,我建议您先阅读。在这里,我将向您展示另外两个用于定制列表表单工具栏的技巧。

技巧 #2:隐藏列表表单工具栏菜单项!

dispform.JPG

有时,您需要从出现在 DispForm.aspx 顶部的工具栏中删除一些项目。不幸的是,"HideCustomAction" 功能只能隐藏通过“自定义操作”功能框架呈现的项目,例如站点操作和站点设置,所以让我们采用与第 1 部分相同的方法,再次深入研究 JavaScript 世界,当涉及到 SharePoint 定制时,我真的觉得它非常方便。

以下函数可用于隐藏 dispform.aspx 中的任何工具栏项目。只需调用该函数,并传递用逗号分隔的项目名称(例如,新建项目、提醒我等)。该函数将删除这些项目,当然,也会删除它们旁边呈现的图像(如果找到)。技巧 #3 将讨论在哪里以及如何将该函数添加到您的列表表单。

hideFormMenuItems("New Item","Alert Me");
 
function hideFormMenuItems()
{  
    var titleToHide="";
    var anchorTag;
    var allAnchorTags = document.getElementsByTagName('a');
    for(var i = 0; i < hideFormMenuItems.arguments.length; i++ )
    { 
        titleToHide = hideFormMenuItems.arguments[i];
        if(titleToHide!='Alert Me')
        {
            for (var j = 0; j < allAnchorTags.length; j++)
            {
                anchorTag= allAnchorTags[j];    

                if (anchorTag.title.indexOf(titleToHide)!=-1)
                {
                    anchorTag.parentNode.parentNode.parentNode.parentNode.
                    parentNode.style.display="none";
                    anchorTag.parentNode.parentNode.parentNode.parentNode.
                    parentNode.nextSibling.style.display="none";
                    break;
                }
            }
        }
        else
        {
            for (var k=0; k < allAnchorTags.length;k++)
            {
                anchorTag= allAnchorTags[k];
                if (anchorTag.id.indexOf("SubscribeButton")!=-1)
                {  
                    anchorTag.parentNode.parentNode.parentNode.parentNode.
                    parentNode.style.display="none";
                    break;
                }
            } 
        }
    }

    var allSpanTags = document.getElementsByTagName("span");
    var spanTag;
    var toolbarRow;
    var lastCell;

    for(var m=0; m < allSpanTags.length;m++)
    {
        spanTag = allSpanTags[m];
    
    if(spanTag.id=='part1')
    {
        toolbarRow = spanTag.childNodes[2].firstChild.firstChild;
        lastCell = toolbarRow.lastChild.previousSibling;
        while(lastCell.style.display=='none')
        {
            lastCell = lastCell.previousSibling;
        }
        if(lastCell.innerText == '|')
        {
            lastCell.style.display='none';
            break;
        }
    }
}

请注意,该函数区分大小写,因此请注意工具栏项目名称的大小写。

技巧 #3:通过 CEWP 添加 JavaScript!

内容编辑器 Web 部件允许您在放置它的 Web 部件页面上添加任何有效的 HTML,这当然包括 <script> 元素。使用内容编辑器 Web 部件的主要优点是,任何具有设计者权限的人都可以快速轻松地完成它。

简单易行,让我们开始吧,只需转到站点操作,编辑页面!

p2t2_editpage.JPG

编辑页面菜单项在哪里?!! 就像旧版本一样,它不可用,我仍然不确定他们为什么这样做!

技巧 #3:只需将 "&ToolPaneView=2" 附加到 URL,您将在浏览器中以编辑模式打开 DispForm.aspx

addContentEditor18.JPG

在呈现列表表单的 Web 部件下方添加一个内容编辑器 Web 部件,并插入技巧 #2 的 JavaScript,如下图所示。(最好将内容编辑器 Web 部件标记为隐藏。)

addContentEditor12.JPG

addContentEditor13.JPG

退出编辑模式…

dispformafter.JPG

太棒了,我们设法隐藏了“新建项目”和“提醒我”。 那么将“编辑项目”重命名为“编辑程序”并删除“删除项目”但保留小图像 (x) 呢? 这就是我将在下一部分的技巧 #4 中介绍的内容!

© . All rights reserved.