关于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后触发.
想研究一下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后触发.