仅保存SPFieldMultiChoice中的交替值

时间:2010-09-16 14:31:07

标签: c# sharepoint sharepoint-2007

我正在忙着构建一个包含各种文本框和查找字段的自定义webpart。除了允许多项选择的查找字段之外,所有这些都正确保存。我没有查找字段的问题,只允许选择一个值。

下面是获取我的复选框列表中所有选定项目的代码,将其转换为多选项值并分配到我的列表[columnname]

try
{
    SPFieldMultiChoiceValue _segmentchoices = new SPFieldMultiChoiceValue();
    foreach (ListItem ls3 in _segment.Items)
    {
        if (ls3.Selected) _segmentchoices.Add(ls3.Value);
    }
    myItems["Segment"] = _segmentchoices;
    myItems.Update();
}
catch (Exception ex) { _errorMessage += "||| Segment : " + ex.Message; }

正确创建了值列表(_segmentchoices),如下所示:{;#1;#2;#3;#4;#5;#}

然而,当它保存时,它只保存值1,3和5.

我的代码没有产生错误,所以我对可能出错的东西感到茫然。关于我需要看什么的任何想法?我是以错误的方式去做的吗?

任何帮助将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:1)

我刚刚意识到您正在谈论多选查找字段。格式应类似于:2;#Procedures;#3;#Systems;#7;#Services

您描述的行为很有意义,因为它可能会像这样解释;#1;#2;#3;#4;#5;#:查找列表中的项目,其lookupID为1(lookupValue为2),lookupID为3(lookupValue为4),而lookupID为5(lookupValue为空)

以下是一些可用于更新多选选择字段的代码:

using (SPSite site = new SPSite(siteUrl))
{
    using (SPWeb web = site.OpenWeb())
    {
        SPList list = web.Lists[listName];
        SPListItem item = list.Items[0];

        SPFieldLookupValueCollection spflvc = new SPFieldLookupValueCollection();
        spflvc.Add(new SPFieldLookupValue(3, string.Empty));
        spflvc.Add(new SPFieldLookupValue(7, string.Empty));
        item["Keywords"] = spflvc;
        item.Update();
    }
}

SPFieldLookupValue的第二个参数似乎并不关心它是否传递了string.Empty,这也可以解释为什么它会忽略它们。