尝试根据属于Sharepoint组的当前登录用户隐藏Sharepoint列表的“新建/编辑”形式的字段

时间:2019-12-09 18:37:05

标签: javascript jquery list sharepoint sharepoint-online

在线使用Sharepoint。我正在使用以下代码通过JS隐藏字段:

<!-- jQuery Reference. You can refer it from Layouts Folder/Doc Library too, after uploading the script. -->
<script src="https://mysite.sharepoint.com/SiteAssets/jquery-1.10.1.min.js"></script>

<!-- Download SPServices from: http://spservices.codeplex.com/ Or use this CDN  -->
<script type="text/javascript" src="https://mysite.sharepoint.com/SiteAssets/jquery.SPServices-0.7.1a.min.js"></script>

<script type="text/javascript">
$(document).ready(function() {
 $().SPServices({
  operation: "GetGroupCollectionFromUser",
  userLoginName: $().SPServices.SPGetCurrentUser(),
  async: false,
  completefunc: function(xData, Status) {
  debugger;
  //If the current User does belong to the group "Service desk Operators"
    if (($(xData.responseXML).find("Group[Name='tecxperts']").length == -1))
     {
     debugger;
          //   alert("No, User Doesn't Exists!");                  
           $("select[title='Project']").parent().parent().parent().hide(); 
          $('td.ms-formlabel:contains("Project")').parent().hide();
          $('nobr:contains("Project")').closest('tr').hide();
       }
    else{
    debugger;      
        }
 });
});
</script>

尽管共享点组 tecxperts 存在,但IF条件始终失败。这是很老的帖子,但是我不明白为什么它不起作用。

我还尝试过将代码放入webpart(脚本编辑器)中,并通过SP Designer直接放入表单中。还有其他方法可以根据属于SP组的用户隐藏字段

2 个答案:

答案 0 :(得分:0)

请尝试以下代码片段,效果很好,我已用字符串搜索替换了查找内容

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

  
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery.SPServices/2014.02/jquery.SPServices.min.js"></script>

 <script type="text/javascript">
    $(document).ready(function() {
     $().SPServices({
      operation: "GetGroupCollectionFromUser",
      userLoginName: $().SPServices.SPGetCurrentUser(),
      async: false,
      completefunc: function(xData, Status) {
      console.log(xData) 

    if(xData.status == 200) {
      var soapString = xData.responseText 
      var find = soapString.search("tecxperts")
      if(find == -1){
       alert("user not found in the group")
      } 
     else{
         alert("userfound in the group")
       }
    }
  }
     
});
    });
    </script>

请接受投票

祝你愉快

答案 1 :(得分:0)

如果当前用户确实属于“ tecxperts”组,则不会输入以下代码:

pub struct Map<K, V> {
  delegate: SomeReferenceType<Arc<HashMap<K, V>>>
}

impl<K, V> Map<K, V> {
  pub fn get(&self, k: &K) -> Option<&V> {
    self.delegate.borrow().get(k)
  } 

  fn update(&mut self, new_delegate: HashMap<K, V>) {
    self.delegate.set(Arc::new(new_delegate));
  }
}

pub struct UpdateService<K, V> {
  collection: Arc<Map<K, V>>
}

impl<K, V> UpdateService<K ,V> {
  pub fn get_collection(&self) -> Arc<Map<K, V>> {
    collection.clone()
  }

  // Called from a thread run on a cadence
  fn update_collection(&mut self) {
    let new_value = /* fetch and process value from backing store */
    self.collection.borrow_mut().update(new_value);
  }
}

您可能需要更改条件,如下所示:

if (($(xData.responseXML).find("Group[Name='tecxperts']").length == -1))
 {
 debugger;
      //   alert("No, User Doesn't Exists!");                  
       $("select[title='Project']").parent().parent().parent().hide(); 
      $('td.ms-formlabel:contains("Project")').parent().hide();
      $('nobr:contains("Project")').closest('tr').hide();
   }

参考代码: Hide Fields using Permission Levels in SharePoint using Java Script

SHAREPOINT – USE JQUERY TO HIDE COLUMNS BASED ON A USERS GROUP MEMBERSHIP

谢谢