我已完成以下代碼以將日曆列表的復發項保存到名爲Bookings
。展開復發和CalendarDate:事件EndDate未自動計算爲定期活動
SPSite site = new SPSite(SPContext.Current.Web.Url);
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Bookings"];
SPListItem recEvent = list.Items.Add();
try
{
recEvent["EventDate"] = startdate;//11/09/2012 08:00:00
recEvent["EndDate"] = enddate;//11/09/2012 08:30:00
recEvent["Booking_x0020_Title"] = Convert.ToString(txtTitle.Text);
recEvent["Title"] = Convert.ToString(txtTitle.Text);
recEvent["RecurrenceData"] = Recur_Xml.ToString();//ReccurrenceRule
recEvent["fRecurrence"] = "True";
recEvent["EventType"] = 1;
recEvent["UID"] = System.Guid.NewGuid();
recEvent["TimeZone"] = 0;
recEvent["Recurrence"] = -1;
recEvent["XMLTZone"] = "<timeZoneRule><standardBias>-330</standardBias><additionalDaylightBias>-60</additionalDaylightBias></timeZoneRule>";
recEvent.Update();
}
catch (Exception er)
{
}
如果我上面有復發的規則保存爲Repeat every 1 day for 10 occurences
比該項目是正確保存和當前活動視圖顯示所有的實例,但同時獲取週期性分錄我只得到1上的開始日期結果即。以下是檢索反覆值碼:
SPWeb oWeb = SPContext.Current.Web;
SPList oListBookings = oWeb.Lists.TryGetList("Bookings");
SPQuery oQueryBookings = new SPQuery();
string strQuery = "";
strQuery = @"<Where><DateRangesOverlap><FieldRef Name='EventDate' /><FieldRef Name='EndDate' /><FieldRef Name='RecurrenceID' /><Value Type='DateTime'><Today /></Value></DateRangesOverlap></Where>";
oQueryBookings.ExpandRecurrence = true;
oQueryBookings.Query = strQuery;
oQueryBookings.CalendarDate = date;
SPListItemCollection oCollBookings = oListBookings.GetItems(oQueryBookings);
結果僅顯示,如果oQueryBookings.CalendarDate = date;
等於11/09/2012 08:00:00
,它不返回任何物品之後的日期,即使實例都存在這些日期,直到19/09/2012 08:00:00
如果我在保存項目時將recEvent["EndDate"]
設置爲19/09/2012 08:00:00
,查詢將返回所有項目。我希望將EndDate for recurring項目設置爲用戶窗體上的同一天(no user would want to calculate the last date of his occurence for recurring pattern with no end date
),並且應該在保存時自動進行自動計算。這是可能的嗎?
如果我使用sharepoint UI進行輸入,則此日期即使設置爲同一天並且它是一個循環條目,也是自動計算的。
請指導我哪裏錯了?是在保存還是在獲取記錄的同時?或者是因爲EndDate
與StartDate
的日期相同?請幫助。
謝謝。 'EndDate'用於每兩個月僅在週日發生並在10次發生後結束的事件!我將如何獲得這樣的事件的結束日期?我的問題不是沒有結束日期的事件,我可以在將來追加許多年,並且工作正常。我的問題只是針對某些情況重複的事件。 – Ishan
好的。對於重複實例,您應該檢查重複數據。 xml值應該包含帶有多個實例的「repeatinstances」標籤。例如,如果您希望該事件會後10個事件結束,那麼XML值應該是這樣的: 蘇 Firstdayofweek可> 10 repeatinstances> 請檢查在屬性 「monthlyByDay」 的標籤。 –
Warlock