Обработчик событий SharePoint

У меня проблема с обработчиком событий в SharePoint.

У меня есть список элементов (Список A), к которому прикреплен обработчик событий с кодом для ItemAdded и ItemUpdated.

Когда срабатывает одно из этих событий, я хочу, чтобы другой список (Список B) был обновлен минимальным значением всех элементов с одинаковыми именами в списке A. Думайте почти как Min (FieldX).

e.g.

ListA
ItemName Value
КатегорияA 2
КатегорияA 4
КатегорияA 3
КатегорияB 1
КатегорияB 8

Список Б
Имя элемента Значение
КатегорияA 2
КатегорияB 1

Если кто-то обновит один из элементов CategoryA в ListA до значения 0, то обработчик событий заменит элемент CategoryA в ListB новым значением 0.

В настоящее время я делаю это, удаляя все элементы в ListB, затем получаю все уникальные имена ItemNames из ListA и вставляя наименьшее значение каждого в ListB.

Это отлично работает, если вы редактируете по одному элементу за раз, но если вы редактируете в таблице данных, возникает беспорядок из-за асинхронного характера. Иногда это срабатывает, иногда нет, и это нехорошо.

Каков наилучший способ сделать что-то подобное? С таким количеством элементов, редактируемых асинхронно, как бы вы обновили такую ​​сводную таблицу согласованным образом?

Спасибо


person Graeme    schedule 06.07.2010    source источник
comment
Простите меня, я собираюсь сделать неприкрытый плагин для программного обеспечения моей компании - PivotPoint - который может выполнять именно такую ​​сводную таблицу, например операции суммирования (min / max / sum / count / std dev) и т. Д. pentalogic.net/sharepoint-products/pivotpoint   -  person Ryan    schedule 06.07.2010


Ответы (1)


Какое событие вы отслеживаете - события Synchronous * ing (ItemAdding) или события Async * ed (ItemAdded)?

Одно из предложений состоит в том, чтобы событие запускало задание таймера для обновления сводного списка. Затем ваш обработчик событий просто проверяет, запланировано ли задание (на какое-то время?), А если не планирует его. Тогда не будет иметь значения несколько быстрых обновлений.

Длительные операции: рассмотрите возможность создания настраиваемого задания таймера SharePoint. Завершите / запланируйте задание таймера из события, а не запускайте всю логику внутри события. Это позволит вам использовать функции SharePoint, чтобы узнать, успешно ли было выполнено задание таймера.

Обработчики событий - Часть 1. Все, что вам нужно знать о ... Обработчиках событий SharePoint ...

Еще одно предложение - нужно ли это предварительно рассчитать и сохранить в списке? Если это просто для отображения, не могли бы вы написать настраиваемую веб-часть, сделать это на лету, кэшировать результаты и очищать кеш в зависимости от SPList.ListItemModified и .LastItemDeleted раз?

person Ryan    schedule 06.07.2010
comment
Идея работы нравится - спасибо! Когда элементы редактируются, я включаю задание на некоторое время (если это еще не сделано), а когда задание запускается, оно обновляет сводный список. Можно ли передать в задание параметры? то есть процесс listA с подсайта X? - person Graeme; 06.07.2010
comment
Я нахожусь в процессе реализации решения Job - можно ли запланировать выполнение задания за несколько минут только один раз, а затем остановить? Я вижу, что есть расписание, но не понимаю, как я могу просто бегать один раз, а потом больше никогда - person Graeme; 12.07.2010
comment
Думаю, я нашел ответ - SPOneTimeSchedule - person Graeme; 12.07.2010
comment
Разместите это, когда сделаете для других ... Спасибо. - person trgraglia; 14.10.2011