【问题标题】:Sharepoint 10 Lists: want to limit form fields per user groupsSharepoint 10 列表:希望限制每个用户组的表单字段
【发布时间】:2016-10-01 03:05:12
【问题描述】:

我正在使用 SharePoint 10 列表功能创建服务请求票务系统。我想在完成表单时对最终用户隐藏一些表单字段,但希望管理员查看所有表单字段。一个示例是隐藏“分配给:”表单字段表单最终用户。不知道该怎么做。提前谢谢你。

【问题讨论】:

    标签: sharepoint-2010


    【解决方案1】:

    下载JQuerySPServices 库并将它们放置在只读文档库或您的14 Hive 中,以适合您的方式。然后编辑列表的 NewForm.aspx(使用 SP Designer)并添加对这两个文件的引用。

    使用以下内容添加脚本标记:

    $(document).ready(function() {
        Admin_Group = "My Group Name";
        if(IsGroupMember(Admin_Group))
        {
            $('input[title="Assigned To"]').parent().parent().css("display","none");
        }
    });
    
    
    function IsGroupMember(GroupName)
    {
        var isGroupMember = false;
        $().SPServices({
                operation: "GetGroupCollectionFromUser",
                userLoginName: $().SPServices.SPGetCurrentUser(),
                async: false,
                completefunc: function(xData, Status) {
                  if($(xData.responseXML).find("Group[Name='" + GroupName + "']").length == 1)                
                  {
                      isGroupMember = true;
                  }
                }
        });
        return isGroupMember;
    }
    

    您可能需要检查输入选择器是否正确访问了assignedto 或您需要隐藏的任何字段,但我在许多情况下都成功地使用了这种方法。确保您隐藏的字段不是必填字段。如果你需要的话,还记得在 EditForm.aspx 中隐藏它。

    【讨论】:

      【解决方案2】:

      您可以通过在 SharePoint 设计器或 InfoPath 中编辑视图/编辑表单来完成此操作,但您需要相当多的 XSLT 或 InfoPath 知识才能执行此类技巧。 对于 InfoPath,请参阅: http://blog.symprogress.com/2011/05/infopath-list-form-hidedisable-fields-based-on-sharepoint-group-membership/

      或者,您可以使用 Visual Studio 为您需要的每个元素创建自定义 Web 部件。

      或者您可以使用这样的产品,这是迄今为止最简单的方法: http://store.bamboosolutions.com/sharepoint-column-level-security.aspx

      【讨论】:

      • 没有这方面的知识?谢谢。
      • 那你应该选择 Bamboo 产品
      【解决方案3】:

      我知道您可以创建列表视图,它们基本上是来自 MVC 模式的视图,可以表示列表的实例。在您的情况下,就像经理票列表视图和 TI 票列表视图一样。您应该在列表视图中搜索共享点。希望这会有所帮助。

      【讨论】:

        【解决方案4】:

        在我们正在构建帮助台系统的组织中,我不得不做同样的事情。用户只需要主题、描述、截止日期等几个字段,而服务台人员则拥有大量字段,包括备注、分配给等。

        最简单的方法是为列表创建一个自定义的 NewForm.aspx。

        您可以在 SharePoint 设计器中执行此操作,方法是复制现有的 NewForm.aspx,将自定义列表表单插入页面,将现有表单的 Visible 属性设置为 false,然后删除您不想要的信息行用户查看。

        然后,只需将 NewForm_Trimmed.aspx 应用为默认的新表单,就可以了。

        编辑:SharePoint Designer 2010 使此过程更容易...点击此链接: http://office.microsoft.com/en-us/sharepoint-designer-help/create-a-custom-list-form-using-sharepoint-designer-HA010378258.aspx

        【讨论】:

        • 当我尝试创建新表单时,我收到一条错误消息,提示“无法将列表更改保存到服务器”。不知道那是关于什么的。
        【解决方案5】:

        我们使用Sharepoint Forms Designer 工具。它允许为不同的共享点组创建特定的表单。

        【讨论】:

          【解决方案6】:

          我的回答与 Paul 的类似,但结构略有不同。我们对列表表单有同样的要求,尽管在我们的例子中,我们基于组成员身份隐藏了某些元素。您需要执行以下操作:

          • 在母版页或编辑表单中添加对 jQuery 和 SPServices 的引用。我们在环境中使用母版页选项。
          • 理想情况下,为您的列表创建一个新的自定义编辑表单并将其设为默认值。如果可以的话,修改原版表单通常不是一个好主意。
          • 在 SharePoint Designer 中打开编辑表单并向其中添加以下脚本:

          $(document).ready(function() {
            $().SPServices({
              operation: “GetGroupCollectionFromUser”,
              userLoginName: $().SPServices.SPGetCurrentUser(),
              async: false,
              completefunc: function(xData, Status) {
                if ($(xData.responseXML).find(“Group[Name = ’Engineering’]”).length == 1) {
                  // alert(“You shouldnt see the button.”);
                  $(“input[id = ’AcctBtn’]”).hide();
                }
              }
            });
          });

          在您的情况下,您实际上想要做相反的事情 - 默认情况下隐藏特定字段,然后在用户在组中时显示它们。只需为要修改的每个元素复制中间线(它隐藏输入字段的位置)。通过这种方式,您可以轻松地为给定 SharePoint 组中的用户显示或隐藏表单上的多个元素。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-09-27
            • 1970-01-01
            • 2010-10-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多