隐藏 NewForm 和 EditForm 上的字段.aspx.aspx基于当前用户在 SharePoint 组中的成员身份 (2007)



我在博客上找到了一些建议的方法来回答如何做到这一点,但没有成功地使用SharePoint MOSS 2007和SharePoint Designer 2007。

我已经隐藏了我不想让任何用户在网站内容类型中看到的字段(这些字段是由SharePoint Designer Workflow设置的)。

我试图隐藏NewForm上的特定字段。aspx和EditForm。根据当前用户是否在特定的SharePoint组中。我的列表有我创建的站点内容类型和站点列。

当我看到NewForm。aspx中的设计视图给了我通用的字段1,2,3,而不是我的特定内容类型。如果我创建一个新的aspx页面并插入SharePoint控件>自定义列表表单,那么我的字段就会显示出来。如果你有的话,我会在designer中进行编辑,但我需要有人检查下面的解决方案,并帮助我找出我搞砸的地方。

选择使用jquery (1.9.0.js)和SPServices (0.7.2.min.js)。

  1. 我把这两个文件上传到我网站上的文档库。

  2. 然后我在我的NewForm上创建了一个CEWP。

  3. . aspx页面(不是通过设计器,而是前端通过添加" share&ToolPaneView=2"到url。
  4. 将以下代码粘贴到CEWP中:

"

<script type="text/javascript" language="javascript" src="/Style%20Library/JavaScript%20Utilities/jquery.SPServices-0.7.2.min.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
  $().SPServices({
    operation: "GetGroupCollectionFromUser",
    userLoginName: $().SPServices.SPGetCurrentUser(),
    async: false,
       completefunc: function (xData, Status) {
       var xml = xData.responseXML.xml;
       if (xml.search('MyGroupName') != -1)
function hidefields() {
         var control = findacontrol("MyColumnName");
         control.parentnode.parentnode.style.display="none";
  }
     }
  });
});
</script>

当我在"源编辑器"对话框中点击保存时,它关闭了,在我的主浏览器状态下,我得到一条消息"请等待,同时加载脚本……"然后什么也没发生。我可以在"修改共享Web部件"菜单上单击"确定",然后Web部件关闭。得到相同的等待消息…

目标是,如果当前用户不是MyGroupName的一部分,那么MyColumnName的字段将在页面上不可见。我不是开发者,但我想在现实生活中扮演一个开发者。

如果你还在读,谢谢!!

您提供的脚本将无法工作。只是检查,你是否包括一个<script />声明的jQuery以及SPServices?浏览器显示在页面加载期间发生的任何脚本错误吗?我偶尔得到一个404,因为我没有正确地引用脚本文件。

同样,如果您的xml.search('MyGroupName')成功,则声明一个新函数。我怀疑您想要调用函数而不是声明它。不过,jQuery为您要执行的操作类型提供了一些有用的简写。例如,如果"MyColumnName"是一个列的id,你可以这样做:

<script type="text/javascript" language="javascript" src="/Style%20Library/JavaScript%20Utilities/jquery.SPServices-0.7.2.min.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
  $().SPServices({
    operation: "GetGroupCollectionFromUser",
    userLoginName: $().SPServices.SPGetCurrentUser(),
    async: false,
    completefunc: function (xData, Status) {
      var xml = xData.responseXML.xml;
      if (xml.search('MyGroupName') != -1) {
        $("#MyColumnName").parent().parent().hide();
      }
    }
  });
});
</script>

如果'MyColumnName'不是你想要找到的元素的id有其他方法来匹配你想要隐藏的元素。看看jQuery.com,特别是jQuery选择器的替代品

使用:if (xml.search('Group Name') == -1) { //Hide the controls }

查看完整的实现:隐藏基于用户权限的SharePoint列表列

相关内容

  • 没有找到相关文章

最新更新