1

我在博客中找到了许多推荐的方法来回答如何做到这一点,但没有成功地使它们中的任何一种使用 SharePoint MOSS 2007 和 SharePoint Designer 2007 工作。

我已经隐藏了我不希望任何用户在网站内容类型中看到的字段(这些字段由 SharePoint Designer 工作流设置)。

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

当我在 Designer 中查看 NewForm.aspx 时,设计视图为我提供了通用字段 1、2、3,而不是我的特定内容类型。如果我创建一个新的 aspx 页面并插入 SharePoint 控件 > 自定义列表表单,则会显示我的字段。如果你有这些方法,我会在设计器中进行编辑,但我需要有人检查下面的解决方案并帮助我找出我在哪里搞砸了。

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

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

  2. 然后,我在我的 NewForm.aspx 页面上创建了一个 CEWP(不是通过设计器,而是通过将“shared&ToolPaneView=2”附加到 url 的前端。

  3. 将以下代码粘贴到 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 部件关闭。获取相同的等待消息...

目标是如果当前用户不是 MyGroupName 的一部分,那么 MyColumnName 的字段将在页面上不可见。不是开发人员,而是试图在现实生活中玩一个。

如果你还在读,谢谢!!!

4

2 回答 2

0

您提供的脚本不起作用。只是检查一下,您是否包含了<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 选择器的替代品。

于 2013-05-22T01:31:50.877 回答
0

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

请参阅以下位置的完整实施:基于用户权限隐藏 SharePoint 列表列

于 2013-07-16T08:38:18.270 回答