在sharepoint文档库中添加或创建文档时,为自定义列指定值

在sharepoint文档库中添加或创建文档时,为自定义列指定值,sharepoint,Sharepoint,我以为这很简单,但我猜不是。我有下面的代码,它可以很好地部署和激活,但是当我向文档库添加一个新文档时,什么也没有发生。也没有错误。这是直接取自另一个例子,网上有人说它有效 以下是我的功能的代码: using System; using System.Collections.Generic; using System.Text; using Microsoft.SharePoint; namespace DocNumGenerator { class DocNumGenerator :

我以为这很简单,但我猜不是。我有下面的代码,它可以很好地部署和激活,但是当我向文档库添加一个新文档时,什么也没有发生。也没有错误。这是直接取自另一个例子,网上有人说它有效

以下是我的功能的代码:

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环境发布网站


谢谢你的帮助

能否尝试先调用base.base.ItemAddingproperties;,然后只需设置properties.ListItem[DocNum]和调用properties.ListItem.SystemUpdatefalse

DocNum是显示名称还是内部名称?尝试在这些事件之间进行更改。

在ItemAdded事件处理程序中尝试以下操作:

DisableEventFiring();
SPListItem item = properties.ListItem;
item["DocNum"] = "4321";
item.Update();
EnableEventFiring();

我成功了我发誓我以前试过。我也重新启动了,所以可能就是这样

以下是我现在的工作:

public override void ItemAdding(SPItemEventProperties properties)
        {
            this.DisableEventFiring();
            properties.AfterProperties["Document Number"] = "whatever";
            this.EnableEventFiring();
        }

需要重新启动表明,即使您的文件已部署到GAC,仍有进程将其锁定。下次,试着运行IISRESET,看看它是否有效。