我对Sharepoint非常陌生,我想要做的是创build一个庞大的所有员工主清单,然后根据个人群体对该人做出不同的“观点”
例如:
一个新员工可能有
我希望将所有这一切都排在一行(每个员工),但是当人力资源部门的人login时,他们只能看到人事和薪金或类似的东西。
如果这不是一个选项,是否有办法跨不同列表链接表?
简单。 1名单。 根据元数据 – 部门,build筑等等,这个清单有几种不同的观点。 您可以在每个视图中显示不同的列。 例如…对于人力资源,你会显示工资col以及名称col。 对于普通人来说,另一种看法是不显示工资。
现在我们做几个Web部件页面。 在每个Web部件页面上,放置一个显示我们列表的Web部件。 但是它只是表明了这个清单的一个观点,没有真正的方法去达到任何其他的。
现在,我们将每个Web部件页面的权限限制为只有您想要查看的组。
所以 – 显示同一列表的不同视图的Web部件页面,以及这些Web部件页面的权限限制。
没有asp代码的解决scheme:
您将需要两个JavaScript库:
– jquery
– SPServices – http://spservices.codeplex.com/
在sharepoint中,创build一个名为“Jquery库”的非公共库,并将jquery和SPServices上传到它。
在共享点devise器中,创build一个AllItems.aspx的副本。
在共享点devise器中,编辑文件AllItems.aspx。 清除所有的代码并插入这个JavaScript代码。
<script language="javascript" type="text/javascript" src="PATH-TO-YOUR-JQUERY-FILE"></script> <script language="javascript" type="text/javascript" src="PATH-TO-YOUR-SPSERVICES-FILE"></script> <script type="text/javascript"> $(document).ready(function() { //Get current username userName = $().SPServices.SPGetCurrentUser({ fieldName: "Name", debug: false }); //get user's group $().SPServices({ operation: "GetGroupCollectionFromUser", userLoginName: userName, async: false, completefunc: function(xData, status){ $(xData.responseXML).find("Group").each(function(){ if(status == "success"){ var nomeGrupo = $(this).attr('Name'); //if user is in group 1 redirect to page 1. If user is in group 2 redirect to page 2 etc... if(nomeGrupo=="Grupo sergio"){ window.location.replace("PATH-TO-PAGE-1/SomeItems.aspx"); }else{ window.location.replace("/PATH-TO-PAGE-2/ViewAll.aspx"); } }else{ alert("Falha na comunicação com o Sharepoint"); } }); } }); }); </script>
此代码将把用户redirect到其他将包含自定义Web部件视图的页面。
在Sharepointdevise中,将AllItems.aspx重命名为SomeItems.aspx(例如)。
您可以创build此文件的多个副本,然后按照下一步进行自定义。
编辑这个文件,并删除位于PlaceHolderMain的主要Web部件(提示:如果你在分享devise器中的分割视图(代码devise),你可以点击和删除)。
然后,您可以为列表插入自定义Web部件视图。 在这个自定义视图中,你可以过滤数据或不显示一些colums。
嗨,我设法隐藏一个字段编程方式见下文。 “批准”字段现在隐藏在列表的编辑屏幕中
SPField Appprove = bdcList.Fields.GetField("Approved"); Appprove.ShowInEditForm = false; Appprove.ShowInDisplayForm = true; Appprove.ShowInNewForm = false; Appprove.Update();