SHAREPOINT 2013: Как прочитать содержимое столбца сайта и изменить его с помощью javascript csom?

Я новичок в Sharepoint 2013, я пытаюсь получить доступ и отобразить на странице содержимое внутри определенного «столбца сайта», я много читал об этом, но я все еще не могу выполнить свою задачу . Пока я добираюсь до этого:

'use strict';
        var hostweburl;
        var appweburl;
        $(function () {
            SP.SOD.executeOrDelayUntilScriptLoaded(Function.createDelegate(this, function () {
                var currentcontext = new SP.ClientContext.get_current();

                var web = currentcontext.get_web();

                //Get all fields in site collection
                var collFields = web.get_availableFields().getByTitle("EngineType_EngineCycle");

                currentcontext.load(collFields);

                currentcontext.executeQueryAsync(Function.createDelegate(this, ExecuteOnSuccess), 
                Function.createDelegate(this, ExecuteOnFailure)); 
            }), 'SP.js'); 

            function ExecuteOnSuccess(sender, args) 
            { 
                var subsites = ''; 

                //for(int i=0; i< collF {
                //    if(collFields[i].Title == "siteColumnName"){
                //        alert("Got the Site col");
                //    }
                //}

            }
            function ExecuteOnFailure(sender, args) { 
                alert("error"); 
            } 
         });

Но теперь я не знаю, как получить доступ к нужным мне данным внутри CollField, может быть, я где-то ошибаюсь? Пожалуйста помоги. Большое спасибо.


person FabioEnne    schedule 28.04.2015    source источник


Ответы (1)


объект SP.FieldCollection содержит следующие методы для получения Объект поля:

  • getById — получает поле с указанным идентификатором
  • getByInternalNameOrTitle — возвращает первый объект Field с указанным внутренним именем или название из сборника
  • getByTitle — возвращает первый объект поля в коллекции на основе заголовок указанного поля

Пример

В следующем примере показано, как получить столбец сайта:

function getSiteField(fieldName,success,failure)
{
     var ctx = SP.ClientContext.get_current(); 
     var rootWeb = ctx.get_site().get_rootWeb(); 
     var field = rootWeb.get_availableFields().getByInternalNameOrTitle(fieldName);
     ctx.load(field);
     ctx.executeQueryAsync(
         function(){
            success(field)
         },
         failure);
}

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

SP.SOD.executeFunc('SP.js', 'SP.ClientContext', function() {

   //get Title column and print its properties
   getSiteField('Title',
    function(field){
       //print field properties
       console.log(field.get_title()); 
       console.log(field.get_internalName());
       console.log(field.get_typeAsString());
       console.log(field.get_description());
    },
    function(sender,args){
       console.log(args.get_message());
    });

});

Как обновить объект поля

В следующем примере показано обновление свойств поля SP.FieldChoice:

function updateFieldChoice(fieldTitle,choiceValues,success,failure) {
    var ctx = SP.ClientContext.get_current();
    var web = ctx.get_web();
    var fieldChoice = ctx.castTo(web.get_availableFields().getByTitle(fieldTitle), SP.FieldChoice);
    fieldChoice.set_choices(choiceValues);
    fieldChoice.update();
    ctx.executeQueryAsync(
         function(){
            success(fieldChoice)
         },
         failure);
}

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

var choiceValues = ["Low", "Normal", "Critical"];

updateFieldChoice('RequestStatus',choiceValues,
    function(field){
       console.log('Choice field has been updated'); 
    },
    function(sender,args){
       console.log(args.get_message());
    });
person Vadim Gremyachev    schedule 29.04.2015
comment
Большое спасибо .. еще один вопрос, пожалуйста .. если я хочу обновить содержимое столбца сайта содержимым массива, как я могу это сделать? (например, столбец моего сайта содержит значения как 1 2 3 4 5, и у меня есть массив с 1 2 2 4 5). - person FabioEnne; 30.04.2015
comment
Конечно, ответ был обновлен, он демонстрирует, как установить значения выбора для поля SP.FieldChoice. - person Vadim Gremyachev; 30.04.2015
comment
извините, я не могу понять, как это реализовать, не могли бы вы сослаться на это, пожалуйста? stackoverflow.com/questions/29964007/ - person FabioEnne; 30.04.2015
comment
Не беспокойтесь, не могли бы вы уточнить только один момент: должен ли этот сценарий выполняться со страницы приложения (часть приложения SharePoint) или с хост-сайта (страница SharePoint)? - person Vadim Gremyachev; 30.04.2015
comment
Это веб-часть, отображаемая на странице SharePoint, большое спасибо! - person FabioEnne; 30.04.2015