如何在Sharepoint 2007中按组限制自定义列表的视图?

我对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();