Получить список SharePoint по внутреннему имени, используя объектную модель ECMAScript / JavaScript - PullRequest
4 голосов
/ 08 января 2012

Как я могу загрузить элементы из списка SharePoint, используя его InternalName? Насколько я знаю, я могу получить его, используя Id или Title, как показано ниже:

var clientContext = new SP.ClientContext('/News/');
var web = clientContext.get_web();
var list = web.get_lists().getById("{1DBA9283-0AFA-4FA1-9BBA-70D8D190971F}");
...

Ответы [ 4 ]

2 голосов
/ 09 января 2012

Всегда рекомендуется получать списки, используя ListUrl, который не изменяется при изменении заголовка списка.

2 голосов
/ 08 января 2012

нет CSOM предлагает только методы для запроса списков по его идентификатору или названию.

См. http://msdn.microsoft.com/en-us/library/ee549620.aspx

Схема списка SharePoint в настоящее время не предлагает InternalNames. Смотрите описание схемы http://msdn.microsoft.com/en-us/library/ms415091.aspx

Торстен

1 голос
/ 11 января 2012

Не знаю, имеете ли вы это в виду, но внутри моего JavaScript-файла я могу использовать объектную модель, если сначала объявлю эти три строки.

/// <reference name="MicrosoftAjax.js" /><br> /// <reference path="file://C:/Program Files/Common Files/Microsoft Shared/Web Server Extensions/14/TEMPLATE/LAYOUTS/SP.core.debug.js" /><br> /// <reference path="file://C:/Program Files/Common Files/Microsoft Shared/Web Server Extensions/14/TEMPLATE/LAYOUTS/SP.debug.js" />

Это соответствующий код, работает без вызова с {SelectedItem} или прочее:

var items = SP.ListOperation.Selection.getSelectedItems();<br> var listID = SP.ListOperation.Selection.getSelectedList();

Это загружает (части) клиентской объектной модели, так что я думаю, что вы можете продолжить. Потому что это поддерживается IntelliSense.

Edit2: Другой способ получить и использовать список только с JavScript - это

var web;  
var context;  
var listTitle = "ListName";  

function InitiateThisScript(itemId) {   
    context = new SP.ClientContext.get_current();  
    web = context.get_web();  
    list = web.get_lists().getByTitle(listTitle);  
    item = list.getItemById(itemId);  
    context.load(web;  
    context.load(list);  
    context.load(item);  
    context.executeQueryAsync(handleItem(item, list));  
}  

Этот способ требует в вашем Elements.xml, где я определил свои кнопки, что вы называете это

CommandAction="javascript:InitiateThisScript('{SelectedItemId}','');" />

Edit3: будьте осторожны при использовании этого JavaScript без каких-либо проверок безопасности. Потому что, например, вы доставили это решение на сайт, на котором есть два списка. Первый, который вы предложили иметь этот JavaScript, а второй. Если у вас есть пользовательские кнопки, которые появляются в обоих списках, вы работаете со вторым списком, но с помощью кнопок запускаете первый список настолько долго, насколько это возможно.
Допустим, у вас есть кнопка, которая очищает содержимое, и у вас есть в обоих списках столбец с названием «заголовок». Если вы попали во второй список и нажали кнопку «удалить заголовок», то в вашем первом списке заголовок из элемента с таким же идентификатором будет удален. По твоему второму списку ничего не происходит.
Это видно из видимости ваших кнопок и отсутствия проверки, является ли назначенный список тем, над которым вы работаете.

Shegit

Редактировать: прокручивая свои вкладки, я нашел эту: Получить элементы из папки с помощью EcmaScript & COM

0 голосов
/ 14 июня 2012

Я думаю, что именно вы задали тот же вопрос на стеке обмена sharepoint. Просто чтобы дать ссылку на мой ответ, вот ссылка. Там я привожу полный пример того, как вы можете получить списки sharepoint, используя их «internalName» (url)

...