我认为这很简单,但不要猜。我有以下代码,它部署和激活就好了,但是当我向文档库添加新文档时,没有任何反应。也没有错误。这是直接来自在线人员的另一个例子,他说这有效。
以下是我的功能代码:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
namespace DocNumGenerator
{
class DocNumGenerator : SPItemEventReceiver
{
public override void ItemAdded(SPItemEventProperties properties)
{
base.ItemAdded(properties);
}
public override void ItemAdding(SPItemEventProperties properties)
{
properties.AfterProperties["DocNum"] = "4321";
base.ItemAdding(properties);
}
public override void ItemUpdated(SPItemEventProperties properties)
{
base.ItemUpdated(properties);
}
public override void ItemUpdating(SPItemEventProperties properties)
{
base.ItemUpdating(properties);
}
}
}
简单吧!为什么这不起作用?除了我指定的自定义列的名称之外,是否还需要以某种方式指定文档库的名称?我迷失在这一点上并急切寻求解决方案。这是一个SharePoint 2007环境,即发布网站。
感谢您的帮助!
答案 0 :(得分:0)
你可以尝试先调用base,base.ItemAdding(properties);然后只需设置properties.ListItem [“DocNum”]和调用properties.ListItem.SystemUpdate(false);
答案 1 :(得分:0)
DocNum是显示名称还是内部名称?尝试在这些之间进行更改。
答案 2 :(得分:0)
在ItemAdded事件处理程序中尝试此操作:
DisableEventFiring();
SPListItem item = properties.ListItem;
item["DocNum"] = "4321";
item.Update();
EnableEventFiring();
答案 3 :(得分:0)
我得到了它的工作..我发誓我之前尝试过这个。我也重新启动了,所以也许就是它????
以下是我现在正在做的事情:
public override void ItemAdding(SPItemEventProperties properties)
{
this.DisableEventFiring();
properties.AfterProperties["Document Number"] = "whatever";
this.EnableEventFiring();
}