我正在编写一个事件处理程序来处理列表中特定SPItem的更新。该事件是异步的,我得到的SPEvenItemProperties没有问题。我想知道的是哪些SPItems列实际上已经触发了事件。任何人都知道如何?
提前致谢。
答案 0 :(得分:4)
您的答案取决于SPListItem的检索位置和方式。在常规列表中,您无权访问该项的先前值。如果打开版本控制,当然可以访问以前的版本,具体取决于权限。
对于文档库,您可以使用SPItemEventProperties.BeforeProperties获取文档的先前元数据。
对于文档库,您可以尝试这样的事情:
foreach (DictionaryEntry key in properties.BeforeProperties)
{
string beforeKey = (string)key.Key;
string beforeValue = key.Value.ToString();
string afterValue = "";
if (properties.AfterProperties[beforeKey] != null)
{
afterValue = properties.AfterProperties[beforeKey].ToString();
if (afterValue != beforeValue)
{
// Changed...
}
}
}
.B
答案 1 :(得分:3)
我认为最好的方法是查看SPItemEventProperties的BeforeProperties和AfterProperties,并检查哪些字段具有不同的值。
这些包含事件发生前后项目所有字段的值。