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

时间:2009-07-10 20:50:15

标签: sharepoint

我认为这很简单,但不要猜。我有以下代码,它部署和激活就好了,但是当我向文档库添加新文档时,没有任何反应。也没有错误。这是直接来自在线人员的另一个例子,他说这有效。

以下是我的功能代码:

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

感谢您的帮助!

4 个答案:

答案 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();
        }