Sharepoint事件处理..哪个列发生了变化?

时间:2009-09-03 23:41:26

标签: sharepoint event-handling

我正在编写一个事件处理程序来处理列表中特定SPItem的更新。该事件是异步的,我得到的SPEvenItemProperties没有问题。我想知道的是哪些SPItems列实际上已经触发了事件。任何人都知道如何?

提前致谢。

2 个答案:

答案 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,并检查哪些字段具有不同的值。

这些包含事件发生前后项目所有字段的值。