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

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

我对 Sharepoint 还很陌生,我想做的是创建一个包含所有员工的庞大主列表,然后根据人员组对该人员做出不同的“查看”

例如:

新员工可能会有

  • 薪资信息
  • 安全信息
  • 人事信息
  • 合同信息

我希望将所有这些放在一行中(每个员工),但当人力资源组中的某个人登录时,他们只能看到人员和薪水或类似的内容。

如果这不是一个选项,有没有办法链接不同列表之间的表格?

答案1

简单。1 个列表。该列表有几种不同的视图,基于元数据 - 部门、建筑等等。您可以在每个视图中显示不同的列。例如...对于人力资源,您可以显示薪水列以及姓名列。对于普通人,另一个视图不显示薪水。

现在我们制作几个 Web 部件页面。在每个 Web 部件页面上,放置一个显示列表的 Web 部件。但它只显示该列表的视图,没有实际方法可以访问任何其他列表。

现在我们将每个 Web 部件页面的权限仅限于您希望查看它的组。

因此 - Web 部件页显示同一列表的不同视图,并且这些 Web 部件页上有权限限制。

答案2

无需 asp 代码的解决方案:

您将需要两个 javascript 库:
- Jquery
- SPServices -http://spservices.codeplex.com/

在 SharePoint 中,创建一个名为“Jquery 库”的非公共库,并将您的 jquery 和 SPServices 上传到其中。

在 SharePoint 设计器中,创建 AllItems.aspx 的副本。

在 SharePoint Designer 中,编辑文件 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>

此代码会将用户重定向到包含自定义 web-parts-view 的其他页面。

在 SharePoint 设计中,将 AllItems.aspx 重命名为 SomeItems.aspx(例如)。

您可以创建该文件的多个副本,然后按照下一步对其进行自定义。

编辑此文件并删除位于 PlaceHolderMain 的主 Web 部件。(提示:如果您在 SharePoint 设计器中处于拆分视图(编码设计)中,则可以单击并删除)。

然后,您可以为列表插入自定义 Web 部件视图。在此自定义视图中,您可以过滤数据或不显示某些列。

答案3

您好,我设法通过编程隐藏了一个字段(见下文)。“批准”字段现在隐藏在列表的编辑屏幕中

SPField Appprove = bdcList.Fields.GetField("Approved");
                        Appprove.ShowInEditForm = false;
                        Appprove.ShowInDisplayForm = true;
                        Appprove.ShowInNewForm = false;
                        Appprove.Update();

相关内容