Создание списка 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