2016-03-11 5 views
0

Я рассмотрел решения для автоматической нумерации в списке SharePoint, но вот моя проблема. У меня нет SPD, Infopath, visual studio. У меня есть только веб-часть HTML. Компания, в которой я работаю, не доверяет людям этим инструментам, поэтому я должен это сделать. Во всяком случае, я импортировал таблицу как список Sharepoint. Я хочу продолжить автоматическую нумерацию из этого списка. Последнее число было 3500. Я хочу ввести новый элемент в форме, где автоматически появляется следующий номер (3501 и т. Д.). Обратите внимание, что ответы, относящиеся к SPD или другим инструментам (меньше java-скрипта - я могу использовать это, я думаю) не сработает. Я даже не могу использовать рабочие процессы, поскольку у меня есть только ванильные рабочие процессы, а не те, которые являются частью SPD.Автоматическая нумерация Sharepoint в списке

Thankyou

ответ

0

Хорошо, хорошо хорошая новость заключается в том, что вы можете сделать что-то работу с JavaScript, но это не будет достаточно.

Вы можете изменить форму «Новый элемент» для своего списка SharePoint и добавить веб-часть редактора содержимого под веб-частью формы по умолчанию.

Редактируйте свойства веб-части редактора содержимого и задайте его свойство «ссылка на контент» как текстовый файл в библиотеке документов на вашем сайте.

В этом текстовом файле вы можете вставлять любые HTML и JavaScript, которые вы хотите ... в этом случае мы добавим JavaScript, который использует объектную модель на стороне клиента SharePoint (CSOM), чтобы запросить список и получить самый большой номер в номере. Затем мы переопределим функцию PreSaveAction() (которая запускается всякий раз, когда кто-то нажимает «Сохранить»), и установите для этого номера элемента значение, равное этому, плюс один перед сохранением.

В приведенном ниже коде замените «Список примеров» названием вашего списка и «MyAutonumberColumn» с внутренним внутренним именем вашего столбца с номером autonumbering.

<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> 

Существует очевидный недостаток такого подхода: если два человека начинают создавать предметы, в то же время, они будут созданы с тем же номером. Вы всегда можете войти и отредактировать эти элементы, чтобы при необходимости дать им разные номера, что может быть хорошо, если этот список не часто обновляется новыми элементами, созданными несколькими людьми.

Смежные вопросы