0

当使用项目更新事件将文档添加到库时,我正在尝试更新文档的自定义元数据,但它不起作用。自定义 aspx 应用程序使用 href 元素指向文档的 URL。单击它会打开类似于 OOB sharepoint 2013 资源管理器视图的 Windows 资源管理器视图。现在,当用户通过复制粘贴选项将文档从 library1(说位于 sitecollection1 中的 site1 中)复制到 library2(位于 sitecollection2 中的 site2 中)时,我需要清除文档的一些元数据。我正在尝试 Lukasz 的建议,但元数据没有清除。在调试模式下,即使在更新之前禁用了事件触发,我看到更新的事件又被再次调用一次,这很奇怪。最后,我的元数据没有被清除。我尝试了更新和更新事件。任何想法?这是我的更新代码:

public override void ItemUpdated(SPItemEventProperties properties)
        {
            base.ItemUpdated(properties);
            ClearNotes(properties);
        }

 private void ClearNotes(SPItemEventProperties properties)
        {
            try
            {
                SPListItem listItem = properties.ListItem;


                listItem["Notes1"] = string.Empty;
                listItem["ReviewNote"] = null;


                base.EventFiringEnabled = false;
                listItem.Update(); 
            }
            catch (Exception ex)
            {
               //logging error to db
            }
            finally
            {
                base.EventFiringEnabled = true;
            }
        }
4

1 回答 1

0

我想一定是 this.EventFiringEnable = false; 不是基地。...

您也可以使用 itemupdating 和 Afterproperties 来执行此操作,然后您不需要禁用 EventFiring 并且不需要更新:

public override void ItemUpdating(SPItemEventProperties properties)
        {
            base.ItemUpdating(properties);

            ///...
            properties.AfterProperties["Notes1"] = string.Empty;            
        }
于 2013-12-17T13:07:02.343 回答