在droplink字段中设置值

时间:2014-02-17 09:46:13

标签: sitecore

如何通过编码在droplink中分配值?

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
Sitecore.Data.Items.Item PriceBookHome = master.GetItem("/sitecore/content/Administration/Price Books/Clarisonic-us-retail");
string currency = "INR";
string currenySource = PriceBookHome.Fields["Currency"].Source;
Sitecore.Data.Items.Item currenyDictSource = master.GetItem(currenySource);

foreach (Item im in currenyDictSource.GetChildren())
{

    if (im.Fields["Key"].Value == currency)
    {

        PriceBookHome.Editing.BeginEdit();
        PriceBookHome.Fields["Currency"].SetValue(im.DisplayName, true);
        PriceBookHome.Editing.EndEdit();
    }

}

插入后我在droplink上收到以下错误:“此字段包含一个不在选择列表中的值”

错误我得到如下:

enter image description here

droplink source [droplink中给定来源的货币路径] enter image description here

2 个答案:

答案 0 :(得分:3)

您需要将货币项的ID设置为值,而不是名称。

PriceBookHome.Fields["Currency"] = im.ID.ToString();

答案 1 :(得分:0)

很可能是因为你在字段中存储了一个字符串(显示名称)。
正如Ruud所说,您可以将ID放入或执行以下操作:

PriceBookHome.Editing.BeginEdit();
var field = (Sitecore.Data.Fields.ReferenceField)PriceBookHome.Fields["Currency"];
field.TargetItem = im;
PriceBookHome.Editing.EndEdit();