C# 仅保存SPFieldMultiChoice中的交替值
我正忙于构建一个带有各种文本框和查找字段的自定义Web部件。除了允许多个选择的查找字段之外,所有字段都正确保存。对于只允许选择一个值的查找字段,我没有这个问题 下面是获取我的复选框列表中所有选定项、将其转换为多选值并分配给我的列表[columnname]的代码C# 仅保存SPFieldMultiChoice中的交替值,c#,sharepoint,sharepoint-2007,C#,Sharepoint,Sharepoint 2007,我正忙于构建一个带有各种文本框和查找字段的自定义Web部件。除了允许多个选择的查找字段之外,所有字段都正确保存。对于只允许选择一个值的查找字段,我没有这个问题 下面是获取我的复选框列表中所有选定项、将其转换为多选值并分配给我的列表[columnname]的代码 try { SPFieldMultiChoiceValue _segmentchoices = new SPFieldMultiChoiceValue(); foreach (ListItem ls3 in _segmen
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;#服务人员更改了我的答案。。。希望能有帮助。你好,凯特,是的。就是这样。它现在成功地保存了我的值。非常感谢你。