0

是否可以在SP 2013中使用項目級別權限以禁止其他用戶修改未由他們但仍然允許他們修改該項目的單個字段(列)?SP列表項目 - 爲項目創建者以外的所有用戶禁用「編輯」,但仍然爲所有用戶保留單個列可編輯

我希望每個人都能夠在點擊「編輯」項目按鈕之後在該列中輸入信息,但是如果該項目不是由他創建的,但不能修改任何其他字段。

只有項目創建者應該能夠修改所有的字段。

任何想法如何做到這一點非常歡迎:)

回答

0

你可以使用客戶端對象模型爲同一如下更多:

$(document).ready(function() { 
if(CheckCreatedBy() != GetCurrentUser()) 
{ 
     $("input[Title='EditableByAllUsers']").prop("disabled", true); 
} 

}); 

function CheckCreatedBy() 
{ 
var clientContext = new SP.ClientContext.get_current(); 
var siteColl = clientContext.get_site(); 
var oList = siteColl.get_rootWeb().get_lists().getByTitle('ChangeEditForm'); 
var itemId = _spGetQueryParam('id') ; 
var camlQuery = new SP.CamlQuery(); 
camlQuery.set_viewXml('<View><Query><Where><Eq><FieldRef Name=\'ID\'/>' + 
    '<Value Type=\'Number\'>'+ itemId +'</Value></Eq></Where></Query></View>'); 
this.collListItem= oList.getItems(camlQuery); 
clientContext.load(collListItem);   
    clientContext.executeQueryAsync(Function.createDelegate(this,this.onCheckCreatedBySuccessMethod), Function.createDelegate(this, this.onCheckCreatedByFailureMethod));   
return this.value; 
    } 
function onCheckCreatedBySuccessMethod(sender, args) 
{ 
var CreatedBy = ''; 

var listItemEnumerator = collListItem.getEnumerator(); 

while (listItemEnumerator.moveNext()) { 
    var oListItem = listItemEnumerator.get_current(); 
    CreatedBy = oListItem.get_item('Author').get_lookupValue(); 
     alert(CreatedBy); 
     return CreatedBy ; 
} 
} 
function onCheckCreatedByFailureMethod(sender, args) 
{ 
alert('request failed ' + args.get_message() + '\n' + args.get_stackTrace()); 
} 

function GetCurrentUser() 
{ 
var ClientContext = new SP.ClientContext.get_current(); 
this.CurrentWeb = ClientContext.get_web(); 
ClientContext.load(this.CurrentWeb.get_currentUser()); 
ClientContext.executeQueryAsync(Function.createDelegate(this, this.onSuccessMethod), Function.createDelegate(this, this.onFailureMethod)); 
    return this.value; 
    } 
    function onSuccessMethod(sender, args) 
{  
    var userObject =this.CurrentWeb.get_currentUser().get_title();  
    return userObject; 
} 
function onFailureMethod(sender, args) { 
    alert('request failed ' + args.get_message() + '\n' + args.get_stackTrace()); 
} 

它也可以使用XSL來完成。 This將幫助你一樣。

我希望這會有所幫助。

相關問題