Задержка события SharePoint ItemAdded - PullRequest
1 голос
/ 25 февраля 2010

Еще один вопрос.

Так что теперь мой EventReceiver и его логика работают просто отлично. За исключением одной вещи.

По сути, он запрашивает весь список через запросы CAML, а затем передает результат в объект DataTable, а затем в объект DataRow ...

Как и все, в тестовой среде работает отлично, но в производстве ...

Что происходит, так это то, что столбец, который мне нужен, обновляется, но обновляется не сразу Столбец item получает желаемое значение, но он не отображается при первом обновлении, вам нужно обновить страницу снова, затем он появляется ...

Разница лишь в том, что в зав. в моем списке около 200 записей, а в производстве почти 5000 записей.

Некоторые вопросы:

  • Есть ли способ определить, сколько записей вы хотите? В CAML или в объекте DataTable? Что-то вроде "SELECT TOP 100 ..."
  • Если нет, есть ли способ остановить процесс обновления и дождаться выполнения кода?

Некоторая информация:

  • Это WSS 3.0, и событие, которое я перехватываю, это ItemAdded, которое объясняет, что обновление не ждет моего кода.

Да, и рассмотрение вопроса об изменении события ItemAdding было бы небольшой проблемой, потому что мне нужно захватить идентификатор записи, который еще не доступен в ItemAdding, поскольку элемент списка еще не был зафиксирован в базе данных. .

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 25 февраля 2010

Проблема здесь заключалась в методе GetDataTable (). Когда я выполнял запрос CAML и заполнял таблицу данных результатами, он терял бы порядок по модификатору. Но если я получу результаты с объектом SPListItemCollection, он вернет строку именно так, как я хотел.

Как видно из другого поста ... "Это неприятная проблема".

1 голос
/ 02 марта 2010

После долгих поисков я переместил свой код в событие ItemAdding, которое является синхронным и завершится до того, как SharePoint загрузит свою страницу.

Даже после того, как я ограничил строки результатов до 5, он все равно загружал бы страницу без значения, которое я хотел показать.


Кроме того, если вы планируете захватить значение из поля, которое использует вычисляемое значение и содержит формулу, будьте осторожны, поскольку, по крайней мере, в моем примере SharePoint не разрешил формулу при выполнении события, поэтому поле с вычисленным значением всегда будет возвращать ноль .

1 голос
/ 25 февраля 2010

Подобный вопрос и ответ здесь . Вы должны иметь возможность использовать свойство Rowlimit в SPQuery.

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