好了,好了,好消息是,你可以做一些工作用JavaScript,但它不会是漂亮。
您可以编辑“新项目”的形式为您的SharePoint列表,并添加下面的默认窗体Web部件内容编辑器Web部件。
编辑内容编辑器Web部件的属性,并设置它的“内容链接”特性,在您的网站上的文档库中的文本文件。
在该文本文件,你可以嵌入你想...在这种情况下,我们将添加使用SharePoint客户端对象模型(CSOM)查询列表一些JavaScript,并得到最大的任何HTML和JavaScript号码列中的号码。然后我们将覆盖PreSaveAction()
函数(只要有人点击“保存”就会触发该函数),并在保存之前将项目的编号设置为该值加1。
在下面的代码中,将“示例列表”替换为列表标题,将“MyAutonumberColumn”替换为具有自动编号的列的内部名称。
<script>
window.MyNamespace = new Object(null);
var my = window.MyNamespace;
my.listName = "Example List";
my.columnInternalName = "MyAutonumberColumn";
ExecuteOrDelayUntilScriptLoaded(GetAutoNumber,"SP.JS");
function PreSaveAction(){
var fieldDictionary = new Object(null);
var fields = document.querySelectorAll("td.ms-formbody");
for (var i=0, len = fields.length; i < len; i++){
var start = fields[i].innerHTML.indexOf("FieldInternalName=");
if(start >= 0){
start += 19;
var internalName = fields[i].innerHTML.substring(start);
internalName = internalName.substring(0,internalName.indexOf('"'));
fieldDictionary[internalName] = fields[i];
}
}
if(fieldDictionary[my.internalColumnName]){
var element = fieldDictionary[my.internalColumnName].querySelector("select, textarea, input");
element.value = my.autoNumber;
return true;
}
}
function GetAutoNumber(){
var my = window.MyNamespace;
var clientContext = new SP.ClientContext();
var list = clientContext.get_web().get_lists().getByTitle("my.listName");
var camlQuery = new SP.CamlQuery();
// use a CAML query to retrieve a set of list items:
camlQuery.set_viewXml(
'<View><Query>'+
'<OrderBy>'+
'<FieldRef Name=\'"+my.columnInternalName+"\' Ascending='FALSE' />'+
'</OrderBy>'+
'</Query><RowLimit>1</RowLimit></View>');
var items = list.getItems(camlQuery);
clientContext.load(items);
clientContext.executeQueryAsync(
/* code to run on success: */
Function.createDelegate(this,
function(){
var item, itemEnumerator = items.getEnumerator();
while(itemEnumerator.moveNext()){
item = itemEnumerator.get_current();
var number = item.get_item(my.columnInternalName);
my.autoNumber = +(number) + 1;
}
}
),
/* code to run on error: */
Function.createDelegate(this,
function(sender,args){
alert(args.get_message());
}
)
);
</script>
有这种方法的明显缺点:如果两个人开始创建,同时项目,他们将与同样数量的创建。您可以随时进入并编辑这些项目,以根据需要为它们提供不同的数字,如果此列表不会被多人创建的新项目频繁更新,则可能会很好。