代码之家  ›  专栏  ›  技术社区  ›  RG-3

使用Sitecore web服务在多重列表字段中添加项目

  •  0
  • RG-3  · 技术社区  · 12 年前

    我正在使用Sitecore web服务在Sitecore中插入字段值。如果我的字段是单行文本,那么它插入得很好。但当它是多列表类型时,就没有插入。 以下是我添加项目的代码:

     private static void GetCountries(DataRow reader, XmlElement myNode)
        {
            myNode.RemoveChild(myNode.LastChild);
            foreach (DataRow wireRow in reader.GetChildRows("Countries"))
            {
                var newNode = myNode.OwnerDocument.CreateElement("Value");
                newNode.InnerText = wireRow["COUNTRY_NAME"].ToString();
                myNode.AppendChild(newNode);
            }
        }
    

    调用后,该字段的myNode如下所示:

    <field itemid="{2C16342E-7662-432B-9895-5EDB15914D7F}" language="en" version="1" 
    fieldid="{1F5956D6-EABE-4F74-A248-B25B7EE90350}" name="Categories" title=""
    type="Multilist" source="/sitecore/content/data/Countries" section="Content" 
    tooltip=""><value>US</value><value>China</value><value>India</value></field>
    

    之后我打电话 拯救 以下为:

     var okay = sitecoreService.Save(getItem.OuterXml, database, myCred);
    

    但我看不到多列表字段中的国家。这是怎么回事?

    1 回复  |  直到 12 年前
        1
  •  3
  •   Stephen Pope    12 年前

    多列表字段采用管道分隔的GUID字符串,因此要将国家/地区添加到此字段中,您需要查找每个字段的Sitecore ID Country 项,然后用管道将它们连接起来。

    <value>{US-GUID}|{China-GUID}|{India-GUID}</value>

    建议不要使用Sitecore web服务来执行这些操作。您使用web服务而不是常规API(这会使这些调用更容易)有什么具体原因吗?