Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅保存SPFieldMultiChoice中的交替值_C#_Sharepoint_Sharepoint 2007 - Fatal编程技术网

C# 仅保存SPFieldMultiChoice中的交替值

C# 仅保存SPFieldMultiChoice中的交替值,c#,sharepoint,sharepoint-2007,C#,Sharepoint,Sharepoint 2007,我正忙于构建一个带有各种文本框和查找字段的自定义Web部件。除了允许多个选择的查找字段之外,所有字段都正确保存。对于只允许选择一个值的查找字段,我没有这个问题 下面是获取我的复选框列表中所有选定项、将其转换为多选值并分配给我的列表[columnname]的代码 try { SPFieldMultiChoiceValue _segmentchoices = new SPFieldMultiChoiceValue(); foreach (ListItem ls3 in _segmen

我正忙于构建一个带有各种文本框和查找字段的自定义Web部件。除了允许多个选择的查找字段之外,所有字段都正确保存。对于只允许选择一个值的查找字段,我没有这个问题

下面是获取我的复选框列表中所有选定项、将其转换为多选值并分配给我的列表[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

我的代码没有生成错误,因此我对可能出现的错误一无所知。关于我需要看什么有什么想法吗?我走错方向了吗

任何协助都将不胜感激。
谢谢你

我刚刚意识到你说的是一个多选查找字段。格式应该是:
2#程序#3;#系统#7;#服务

您描述的行为很有意义,因为它可能是在解释
#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,这也可以解释为什么它会忽略上面的参数。

我刚刚意识到你说的是一个多选查找字段。格式应该是:
2#程序#3;#系统#7;#服务

您描述的行为很有意义,因为它可能是在解释
#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,这也可以解释为什么它会忽略上面的参数。

HI Kit,谢谢。学到了一些新东西:)。但是我仔细检查了一下,它是按照正确的顺序进行的。所以它仍然不能解决我的问题。今晚我会再看一次,然后尝试一些其他的东西,看看我是否能了解发生了什么。我刚刚意识到你使用的是一个多选查找列。我想你需要一种不同的格式,因为当我查看我的列表时,它会显示如下内容:2#程序#3;#系统#7;#服务人员更改了我的答案。。。希望能有帮助。你好,凯特,是的。就是这样。它现在成功地保存了我的值。非常感谢。嗨,基特,谢谢你。学到了一些新东西:)。但是我仔细检查了一下,它是按照正确的顺序进行的。所以它仍然不能解决我的问题。今晚我会再看一次,然后尝试一些其他的东西,看看我是否能了解发生了什么。我刚刚意识到你使用的是一个多选查找列。我想你需要一种不同的格式,因为当我查看我的列表时,它会显示如下内容:2#程序#3;#系统#7;#服务人员更改了我的答案。。。希望能有帮助。你好,凯特,是的。就是这样。它现在成功地保存了我的值。非常感谢你。