【问题标题】:Insert/Update multiple lookup values to an SPListItem将多个查找值插入/更新到 SPListItem
【发布时间】:2010-03-10 21:56:21
【问题描述】:

我的 SharePoint 列表有一个允许多个查找值的列。我的 C# 控件(在 Web 部件内)允许用户从列表框中进行多项选择。我将这些值拆分为一个数组 - 每个数组成员都是需要在同一 SPListItem 列中更新的选定值。

我知道选择是从列表框中正确传递的 - 我只需要将这组值添加到 SPListItem 的同一列中。

我哪里出错了?

SPFieldLookupValueCollection MyCollection = new SPFieldLookupValueCollection();
for (int i = 0; i < MyArrayOfSelections.Length; i++)
{
   if (MyLookupList["LookupColumn"].ToString() == MyArrayOfSelections[i].ToString())
   {
      MyID = int.Parse(MyLookupList[i]["ID"].ToString());
      SPFieldLookupValue thisSelection = new SPFieldLookupValue(MyID,MyArrayOfSelections[i].ToString());
      MySubCollection.Add(thisSelection);
      }
   }
   ListIWantToUpdate["ColumnWithMultipleLookupSelections"] = SubCollection;
   ListIWantToUpdate.Update();
   site.Update();
}

【问题讨论】:

  • 上面的代码实际上包含在另一个 for 循环中,该循环遍历查找列表中的 SPListItemCollection
  • 呸!我发现了问题——这也是一个愚蠢的问题。在外部 for 循环中,i++...在内部 for 循环 j++ 上。当我遍历列表框中的选择数组时 - 我使用了“i”索引而不是“j”索引。哦!我很欣赏你的网站——通常当我遇到障碍时......我可以在这里找到答案。谢谢。

标签: c# sharepoint splistitem spfieldcollection


【解决方案1】:

代码示例的最后几行令人困惑(可能只是变量命名)。如果您只是更新数据,则无需更新SPList 对象(这需要特定列表的“管理列表”权限,也不需要更新SPSite ojbect(要求您是站点)管理员或所有者)。因此,对于普通用户,此代码将无法成功运行。

【讨论】:

  • 我不知道我是怎么错过你回复时的电子邮件通知的!今天刚遇到这个;我非常感谢您的回复。回复:令人困惑的命名条件,mea culpa。我正在更新一个列表项。感谢您对 SPSite 对象的更正。你的帖子很有帮助。
猜你喜欢
  • 2014-08-05
  • 2019-01-23
  • 2016-04-01
  • 2018-03-25
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多