【问题标题】:Sharepoint 2013. Multivalue lookup field with JavaScriptSharepoint 2013. 使用 JavaScript 的多值查找字段
【发布时间】:2014-03-27 17:19:17
【问题描述】:

有没有办法使用 JavaScript 客户端对象模型编辑多值查找字段? 我需要删除一个或多个查找值,并最终添加一个或多个值。

我到处搜索,我阅读 MSDN 文档,...,我也看看我的桌子底下!

谢谢。

【问题讨论】:

    标签: javascript sharepoint


    【解决方案1】:

    Multiple-Column Lookup 值表示为 SP.FieldLookupValue 对象的数组。

    如何读取多个Lookup字段值

    var context = new SP.ClientContext.get_current();
    var web = context.get_web();
    var list = web.get_lists().getByTitle(listTitle);
    var listItem = list.getItemById(1);   
    context.load(listItem);
    context.executeQueryAsync(
       function() {
           var lookupVals = listItem.get_item(fieldName); //get multi lookup value (SP.FieldLookupValue[])
           for(var i = 0;i < lookupVals.length;i++) {
               console.log(lookupVals[i].get_lookupId()); //print Id
               console.log(lookupVals[i].get_lookupValue()); //print Value
           }
       },
       function(sender,args){
           console.log(args.get_message());
       }
    );
    

    如何更新多个Lookup字段值

    要更新多个查找值,您需要指定SP.FieldLookupValue[] 类型的值。注意,SP.FieldLookupValue 只能通过指定 LookupId 来初始化。

    var context = new SP.ClientContext.get_current();
    var web = context.get_web();
    var list = web.get_lists().getByTitle(listTitle);
    var listItem = list.getItemById(1);   
    
    var lookupVals = [];
    //set 1st Lookup value
    var lookupVal1 = new SP.FieldLookupValue();
    lookupVal1.set_lookupId(1);
    lookupVals.push(lookupVal1);
    //set 2nd Lookup value
    var lookupVal2 = new SP.FieldLookupValue();
    lookupVal2.set_lookupId(2);
    lookupVals.push(lookupVal2);
    
    listItem.set_item(fieldName,lookupVals);
    listItem.update();
    
    context.executeQueryAsync(
       function() {
            console.log('Multi lookup field has been updated');
       },
       function(sender,args){
           console.log(args.get_message());
       }
    );
    

    【讨论】:

    • 当然,我犯了一个错误:我在评论中按回车换行,但这样我发布了一条不完整的评论...完整消息:非常感谢。但我已经尝试过这段代码(我在这里找到它:stackoverflow.com/questions/7043316/…。它运行时没有错误,但不会更新项目。我认为 SharePoint 2010 与 2013 不同。你在 Sharepoint 上尝试过(你发布的代码)吗2013 年?
    • 是的,在使用 SharePoint 2013 发布答案之前对其进行了测试,它对我有用。顺便说一句,您提供的链接描述了更新多个查找值的相同方式,唯一的区别是在我的情况下它是一个完整的代码 sn-p
    • 是的,你的代码更好:-)。无论如何,该链接适用于 SharePoint 2010。我认为 SharePoint 2013 代码不同。
    • 谢谢,很高兴听到这个消息 :) 关于查找字段,我相信 SharePoint 2010 和 2013 CSOM 之间没有区别。但在分类领域的情况下,例如,有区别。
    • 我理解我的错误。方法 listItem.update() 没有发出 ajax 请求。要更新上下文,需要调用 context.executeQueryAsync()。
    【解决方案2】:

    你可以通过这种方式通过js获取查找值:

    clientContext.executeQueryAsync(function () {

        var listItemEnumerator = collListItem.getEnumerator();
    
        while (listItemEnumerator.moveNext()) {
                    var oListItem = listItemEnumerator.get_current();
                    chartX.push(oListItem.get_item(xAxisName));
    
    
                }
        lookupValue1= chartX["0"].$1g_1;
        lookupValue2= chartX["1"].$1g_1;
    

    【讨论】:

    • 不要这样做,$1g_1 是一个内部属性,可以使用下一版本的 SharePoint JavaScript 库进行更改
    猜你喜欢
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    相关资源
    最近更新 更多