SHAREPOINT 2013:如何通过javascript csom读取站点列内容并修改它们?

SHAREPOINT 2013:如何通过javascript csom读取站点列内容并修改它们?,javascript,sharepoint-2013,csom,Javascript,Sharepoint 2013,Csom,我是Sharepoint 2013的新手,我试图访问并在页面上显示特定“站点栏”中的内容,我已经阅读了很多关于这方面的内容,但我仍然无法完成我的任务。到目前为止,我得出以下结论: 'use strict'; var hostweburl; var appweburl; $(function () { SP.SOD.executeOrDelayUntilScriptLoaded(Function.createDelegate(

我是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"); 
            } 
         });
“严格使用”;
var hostweburl;
var-appweburl;
$(函数(){
SP.SOD.executeOrderLayintlScriptLoaded(Function.createDelegate)(此函数为(){
var currentcontext=new SP.ClientContext.get_current();
var web=currentcontext.get_web();
//获取网站集中的所有字段
var collFields=web.get_availableFields().getByTitle(“EngineType_EngineCycle”);
currentcontext.load(collFields);
currentcontext.executeQueryAsync(Function.createDelegate(这是ExecuteOnSuccess),
createDelegate(这个,ExecuteOnFailure));
})"SP.js",;
函数ExecuteOnSuccess(发送方,参数)
{ 
var子网站=“”;
//对于(int i=0;i
但是现在我不知道如何访问/检索CollField中我需要的数据,也许我在什么地方出错了?请帮助。非常感谢。

包含以下获取数据的方法:

  • -获取具有指定ID的字段
  • -返回集合中具有指定内部名称或标题的第一个字段对象
  • -根据指定字段的标题返回集合中的第一个字段对象
示例

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());
    });

});
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());
    });
以下示例演示如何检索站点列:

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());
    });

});
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());
    });

如何更新 以下示例演示如何更新
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);
}
用法

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());
    });

});
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());
    });

非常感谢..请再问一个问题..如果我想用数组的内容更新站点列的内容,我该怎么做?(例如,我的站点列包含的值为1 2 3 4 5,我的数组包含1 2 4 5)。当然,答案已经更新,它演示了如何为SP设置选项值。FieldChoice Field抱歉,我不知道如何实现,请您参考一下,好吗?请不要担心,请您稍等澄清,此脚本是从应用程序页(SharePoint应用程序的一部分)还是从主机web执行的(SharePoint页面)?这是一个显示在SharePoint页面中的web部件,非常感谢!!