读书人

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

发布时间: 2012-03-23 12:06:21 作者: rapoo

关于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后触发.

读书人网 >行业软件

热点推荐