назначить значение пользовательскому столбцу при добавлении или создании документа в библиотеке документов sharepoint - PullRequest
0 голосов
/ 11 июля 2009

Я думал, что это будет довольно просто, но не думаю. У меня есть следующий код, он развертывается и активируется просто отлично, но когда я добавляю новый документ в библиотеку документов, ничего не происходит. Ошибок тоже нет. И это взято непосредственно из другого примера от кого-то онлайн, который сказал, что это работает.

Вот код моей функции:

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 голосов
/ 14 июля 2009

Я заставил это работать .. и я клянусь, что попробовал это прежде. Я также сделал перезагрузку, так что, может быть, это было ???

Вот что сейчас работает для меня:

public override void ItemAdding(SPItemEventProperties properties)
        {
            this.DisableEventFiring();
            properties.AfterProperties["Document Number"] = "whatever";
            this.EnableEventFiring();
        }
0 голосов
/ 11 июля 2009

Является ли DocNum отображаемым именем или внутренним именем? Попробуйте переключиться между ними.

0 голосов
/ 13 июля 2009

Попробуйте это в обработчике события ItemAdded:

DisableEventFiring();
SPListItem item = properties.ListItem;
item["DocNum"] = "4321";
item.Update();
EnableEventFiring();
0 голосов
/ 11 июля 2009

могли бы вы сначала попытаться вызвать base, base.ItemAdding (properties); затем просто установить properties.ListItem ["DocNum"] и вызвать properties.ListItem.SystemUpdate (false);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...