Элемент обновления имеет повторение в SharePoint - PullRequest
3 голосов
/ 11 мая 2010

У меня был список событий. Я создал новый элемент, который повторяется ежедневно (время начала: 05.01.2010, 12:00 и время окончания: 30.05.2010, 12:00). Я хочу удалить элемент с временем начала: 12.05.2010, 12:00, но мое приложение выдало исключение.

Мой код, как показано ниже:

   DateTime eventDate = DateTime.Parse(list.Fields.GetFieldByInternalName("EventDate").GetFieldValueAsHtml(DateTime.Parse(this.DateTimeOfItem).ToUniversalTime()));
                            SPQuery pQuery = new SPQuery();
                            pQuery.ExpandRecurrence = true;
                            pQuery.CalendarDate = eventDate.AddDays(-1);
                            pQuery.Query = string.Format("<OrderBy><FieldRef Name=\"EventDate\"/></OrderBy><Where><And><DateRangesOverlap><FieldRef Name=\"EventDate\" /><FieldRef Name=\"EndDate\" /><FieldRef Name=\"RecurrenceID\" /><Value Type=\"DateTime\"><Week /></Value></DateRangesOverlap><Eq><FieldRef Name=\"ID\" /><Value Type=\"Counter\">{0}</Value></Eq></And></Where>", this.ID);
                            SPListItemCollection itemColl = list.GetItems(pQuery);
                            int index = 0;
                            while (index < itemColl.Count)
                            {
                                SPListItem item = itemColl[index];
                                if (DateTime.Parse(item["EventDate"].ToString()).CompareTo(eventDate) == 0)
                                {
                                    web.AllowUnsafeUpdates = true;
                                    item["UID"] = Guid.NewGuid().ToString();
                                    item["EventType"] = 3;
                                    item["RecurrenceID"] = eventDate;
                                    item["MasterSeriesItemID"] = this.ID;
                                    item["XMLTZone"] = null;
                                    item["RecurrenceData"] = "Every 1 day(s)";
                                    item.Update();
                                    list.Update();
                                    web.AllowUnsafeUpdates = false;
                                    break;
                                }
                                index++;
                            }

Не знаю, почему не могу обновить этот пункт. Пожалуйста, помогите мне.

Спасибо

PD.

Ответы [ 2 ]

13 голосов
/ 11 мая 2010

Чтобы удалить экземпляр повторяющегося события в SharePoint, нужно добавить запись NEW и отметить ее как удаленную.

Чтобы понять повторяющиеся события в SharePoint и сохранять здравый смысл, вам нужно написать небольшую утилиту для вывода всего списка (каждого поля), чтобы узнать, как они работают. Запрос CAML расширяет повторяющееся событие в «поддельные» экземпляры, и они не могут быть обновлены.

Когда вы устанавливаете повторяющееся событие, вы добавляете в список только 1 запись, независимо от того, сколько у нее экземпляров. Это «основная запись» с шаблоном повторения в поле RecurrenceDate .

Когда вы добавляете исключение (например, был удален или перенесен экземпляр на «5/5/2010 12: 00 AM»), это еще одна НОВАЯ запись.

В этой исключительной записи у вас есть следующие поля интереса

  • MasterSeriesItemID - идентификатор основной рекуррентной записи
  • EventType - 3 для измененного экземпляра, 4 для удаленного экземпляра
  • RecurrenceID - Дата и время экземпляра, заменяемого этим исполнением

Относится к регистровому отчету по регионам

Это лучший справочный материал для повторяющихся событий.

Понимание календаря SharePoint и его экспорта в формат iCal

Имейте в виду, что в SharePoint 2007 есть несколько довольно сумасшедших ошибок, преобразующих время в UTC во время и из него в поле RecurranceID, когда вы получаете «События на весь день» (либо основная запись, либо исключение)

3 голосов
/ 05 марта 2011

Да, Райан прав. Вам нужно добавить новую запись, чтобы удалить экземпляр повторяющейся серии. Для подробной информации проверьте этот URL: http://sharepointtechie.blogspot.com/2010/08/deleting-individual-events-from.html

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