是否可以使用 SP 2013 中的项目级权限来禁用其他用户修改不是由他们创建的项目,但仍允许他们修改该项目的单个字段(列)?
我希望每个人都能够在单击“编辑”项目按钮后在该列中输入信息,但如果该项目不是由他创建的,则无法修改任何其他字段。
只有项目创建者才能修改所有字段。
任何如何实现这一目标的想法都非常受欢迎:)
是否可以使用 SP 2013 中的项目级权限来禁用其他用户修改不是由他们创建的项目,但仍允许他们修改该项目的单个字段(列)?
我希望每个人都能够在单击“编辑”项目按钮后在该列中输入信息,但如果该项目不是由他创建的,则无法修改任何其他字段。
只有项目创建者才能修改所有字段。
任何如何实现这一目标的想法都非常受欢迎:)
您可以使用客户端对象模型,如下所示:
$(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 来完成。这将对您有所帮助。
我希望这有帮助。