在SharePoint 2010网站上,我有一个ItemAdded事件接收器,它检测添加到Pages库的页面,用文件中的信息填充它,并从该信息设置一些自定义列,以便可以根据他们的搜索页面内容。设置列的函数部分与此类似:
page.SetProperty("Column1", ExistsOrEmpty("Property1", dictionary));
page.SetProperty("Column2", ExistsOrEmpty("Property2", dictionary));
...
page.Update();
其中page
的类型为SPFile
,并且是已添加到库中的页面。 ExistsOrEmpty
是我编写的一个函数,用于防止KeyNotFound异常:
private static string ExistsOrEmpty(string key, Dictionary<string, string> dict)
{
try
{
return dict[key];
}
catch
{
return "";
}
}
我的问题是,特别是一个列,描述,在网站上没有更新,即使其余的更新没有任何问题。以下是我逐行逐步调试此代码所采取的步骤:
ExistsOrEmpty("Description", dict)
返回正确的值。page.SetProperty("Description", ExistsOrEmpty("Description", dict))
以及我想设置的所有其他属性。我更新的所有属性都是单行字符串。page.Update()
更新页面。page.GetProperty
检查网页的属性,以确认所有属性都已正确更新,这些属性已经更新。我无法想象为什么当其他专栏没有出现问题时,这一列不会更新。我错过了什么吗?
编辑: 我已经做了一些调整以尝试解决这个问题,并且它已经开始发生在其他多个列中。我注意到,对于其他列,错误发生在列名称曾经有空格并且我将其删除。我已确保更新我的代码以考虑这些更改,我的调试器仍然显示列已更新,但UI不反映这些更改。使用内部名称而不是显示名称修复此问题,但不是我对描述的主要问题。
答案 0 :(得分:1)
请你试试。
您的SPFile对象上应该有一个SPListItem对象。
它将类似于page.item["Description"] = "desc"
然后调用更新。
干杯 Truez