Создание списка Sharepoint 2010 с использованием ecmascript

Я новичок в ECMAScript и разработке точек обмена, у меня есть небольшое требование, мне нужно создать один список с использованием ECMAScript, и при создании он должен проверить, существует ли список на сайте, если список не существует, новый список должен создать.

2 ответа

Вы можете использовать SPServices с "GetListCollection", чтобы найти все списки в Sharepoint, а затем использовать "AddList" для его создания.

Что-то вроде:

var myList="My List Test"; // the name of your list
var listExists=false;
$().SPServices({
  operation: "GetListCollection",
  async: true,
  webURL:"http://my.share.point/my/dir/",
  completefunc: function (xData, Status) {
    // go through the result
    $(xData.responseXML).find('List').each(function() {
      if ($(this).attr("Title") == myList) { listExists=true; return false }
    })
    // if the list doesn't exist
    if (!listExists) {
      // see the MSDN documentation available from the SPService website
      $().SPServices({
        operation: "AddList",
        async: true,
        webURL:"http://my.share.point/my/dir/",
        listName:myList,
        description:"My description",
        templateID:100
      })
    }
  }
});

Обязательно прочитайте сайт правильно, и особенно FAQ. Вам нужно будет включить jQuery, а затем SPServices в ваш код.

Вы можете использовать JSOM или SOAP Services для этой цели, ниже демонстрируется JSOM решение.

Как создать список с помощью JSOM в SharePoint 2010

function createList(siteUrl,listTitle,listTemplateType,success,error) {
    var context = new SP.ClientContext(siteUrl);
    var web = context.get_web();

    var listCreationInfo = new SP.ListCreationInformation();
    listCreationInfo.set_title(listTitle);
    listCreationInfo.set_templateType(listTemplateType);

    var list = web.get_lists().add(listCreationInfo);
    context.load(list);
    context.executeQueryAsync(
        function(){
            success(list);
        }, 
        error
    );
}

Как определить, существует ли список в сети

К сожалению, JSOM API не содержит никаких "встроенных" методов для определения, существует ли список, но вы можете использовать следующий подход.

Одним из решений было бы загрузить веб-объект с коллекцией списков, а затем перебрать коллекцию списков, чтобы найти конкретный список:

context.load(web, 'Lists');

Решение

В следующем примере показано, как определить, существует ли List с помощью JSOM:

function listExists(siteUrl,listTitle,success,error) {
    var context = new SP.ClientContext(siteUrl);
    var web = context.get_web();
    context.load(web,'Lists');

    context.load(web);
    context.executeQueryAsync(
        function(){
            var lists = web.get_lists();
            var listExists = false;
            var e = lists.getEnumerator();
            while (e.moveNext()) {
              var list = e.get_current();
              if(list.get_title() == listTitle) {
                 listExists = true;
                 break;
              }
            }   
            success(listExists); 
        }, 
        error
    );
}

использование

var webUrl = 'http://contoso.intarnet.com';
var listTitle = 'Toolbox Links';

listExists(webUrl,listTitle,
  function(listFound) {
     if(!listFound){

        createList(webUrl,listTitle,SP.ListTemplateType.links,
          function(list){
             console.log('List ' + list.get_title() + ' has been created succesfully');
          },
          function(sender, args) {
             console.log('Error:' + args.get_message()); 
          }
        );  

     } 
     else {
        console.log('List with title ' + listTitle + ' already exists'); 
     }

   }   
);

Рекомендации

Как выполнить основные операции с использованием кода библиотеки JavaScript в SharePoint 2013

Другие вопросы по тегам