关于EventHandler的有关问题,请高手解答

关于EventHandler的问题,请高手解答
想研究一下EventHandler所以做了以下小程序、他的主要目的是上传文档时,更新某列。

 ①class ShowEventHandler : SPItemEventReceiver
  {
  public override void ItemAdding(SPItemEventProperties properties)
  {
  //base.ItemAdding(properties);

  SPListItem item = properties.ListItem;
  string name = item["SearchResult"].ToString();
  string date = "lizhx";
  item["sum"] = name + date + "AA";
  item.Update();

  }

  public override void ItemAdded(SPItemEventProperties properties)
  {
  //base.ItemAdded(properties);

  SPListItem item = properties.ListItem;
  string name = item["SearchResult"].ToString();
  string date = "lizhx";
  item["sum"] = name + date;
  item.Update();

  }

  public override void ItemUpdated(SPItemEventProperties properties)
  {
  SPListItem item = properties.ListItem;
  string name = item["SearchResult"].ToString();
  string date = "lizhx";
  item["sum"] = name + date;
  item.Update();

  }

  public override void ItemDeleting(SPItemEventProperties properties)
  {
  //base.ItemDeleting(properties);
  properties.ErrorMessage = "ShowGm say:~~~New no Delete Info!";
  properties.Cancel = true;
  }
  }

②然后用`GAC注册


问题点:选择完文档,点击"CheckIn"
提示:发生错误,上传的文档正在被SHAREPOINT\system 变更
所以只好点击Cancel
但发现文档上传完毕,列已经更新了
怎么回事啊

------解决方案--------------------
如果你要在文档上传结束后, 更新某列, 实现ItemAdded就可以了.
public override void ItemAdded(SPItemEventProperties properties) 
{
}


另外如果你用断点测试这个问题, 会碰到"发生错误,上传的文档正在被SHAREPOINT\system 变更 "
但在平时情况下, 是没有错误的

你想在文档上传的期间更新某列, 好像是没办法的.

ItemAdding和ItemAdded的区别在于, ItemAdding还未把Item的资料写入Content DB时触发, ItemAdded是在item写入DB后触发.