Как читать столбцы типа SPUser, DateTime, Currency с EcmaScript? - PullRequest
1 голос
/ 17 января 2012

У меня есть список в SharePoint 2010 с некоторыми столбцами. Все являются типами по умолчанию. Итак, у меня есть
«Одна строка текста»
«Многострочный текст»
«Дата и время»
"Выбор"
"Номер"
"Валюта"
"Человек или группа"

Моя цель - создать пользовательскую вкладку ленты или группу, в которой я могу выполнить какое-либо действие в этом списке. В качестве отправной точки я создал пустой элемент в своем решении Visual Studio и поместил в Elements.xml мои кнопки. Это работает до сих пор. Я также понял, как сделать обратную передачу, чтобы реагировать на нажатие кнопки. Этот постбэк ссылается на файл JavaScript.

Перед выполнением какого-либо действия я сначала попытался прочитать заданное содержимое и вернуть его, используя alert('first field: ' + field1). В первой вызванной функции у меня есть

function calledPostbackFunction(string button) {  
    var context = SP.ClientContext.get_current();  
    this.site = context.get_site();  
    this.web = context.get_web();  
    context.load(this.site);  
    context.load(this.web);  
    context.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceded(button), Function.createDelegate(this, this.onQueryFailed));

Как получить содержимое из перечисленных типов столбцов? Я помню, что мне удавалось читать одну текстовую строку и выбор, но остальные разбились. Так что я думаю, что должен преобразовать это любым способом. Но как? IntelliSense не очень помогает.

ВОПРОС: Я бы пропустил использование EcmaScript, если вы можете сказать мне, как сделать PostBack для файла .cs, где я могу использовать клиентскую объектную модель. Я нашел что-то, но не работал / не понял.

Да, хотя это будет легко, но это не так. Хотя бы потому, что я немного знаю C #, но не знаю EcmaScript.

Спасибо.

1 Ответ

4 голосов
/ 26 января 2012

Хорошо, я получил решение Sharepoint.Stackoverflow.com от пользователя Вардхаман Дешпанде . Это работает.

Вот как получить значение для каждого типа поля:

Title – SP.ListItem.get_item(‘Title‘);

ID – SP.ListItem.get_id();

Url -SP.ListItem.get_item(‘urlfieldname‘).get_url()

Description – SP.ListItem.get_item(‘descriptionfieldname‘).get_description();

Current Version – SP.ListItem.get_item(“_UIVersionString“);

Lookup field – SP.ListItem.get_item(‘LookupFieldName’).get_lookupValue();

Choice Field – SP.ListItem.get_item(‘ChoiceFieldName‘);

Created Date – SP.ListItem.get_item(“Created“);

Modified Date – SP.ListItem.get_item(“Modified“); -> case sensitive does not work with ‘modified’

Created By – SP.ListItem.get_item(“Author“).get_lookupValue());

Modified by – SP.ListItem.get_item(“Editor“).get_lookupValue());

File  – SP.ListItem.get_file();

File Versions -  File.get_versions();.

Content Type – SP.ListItem.get_contentType();

Parent List – SP.ListItem.get_parentList();

из: http://www.learningsharepoint.com/2011/07/06/how-to-get-various-item-fields-using-client-object-model-ecmascript-sharepoint-2010/

ОБНОВЛЕНИЕ: Следующий код работает и проверен.

var item;
function getItemById(itemId){

    var clientContext = new SP.ClientContext.get_current();

    var web = clientContext.get_web();

    var list = web.get_lists().getByTitle('myList');

    item = list.getItemById(itemId);

    clientContext.load(item);

    clientContext.executeQueryAsync(onSuccess, onFailure);
}
function onSuccess(){

    alert(item.get_item("My User column").get_lookupValue());
}
function onFailure(){

    alert('Failure!');
}
...