반복을 확장하고 CalendarDate:Event EndDate가 반복 이벤트에 대해 자동 계산되지 않음
-
09-12-2019 - |
문제
나는 달력 목록에 반복되는 항목을 저장하기 위해 다음 코드를 수행했습니다. Bookings
.
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
항목을 저장하는 동안.사용자 양식에서 반복 항목의 종료 날짜를 같은 날로 설정하고 싶습니다(no user would want to calculate the last date of his occurence for recurring pattern with no end date
) 저장 시 자동 계산되어야 합니다. 어떻게 그게 가능합니까?
Sharepont UI를 사용하여 항목을 작성하면 이 종료 날짜가 같은 날짜로 설정되어 있고 반복 항목인 경우에도 자동 계산됩니다.
내가 어디로 잘못 가고 있는지 안내해주십시오.저장하는 동안인가요, 아니면 기록을 가져오는 동안인가요?아니면 그 때문인가? EndDate
은(는) 날짜와 같습니다 StartDate
?친절하게 도와주세요.
해결책
문제는 시작 날짜와 종료 날짜가 같은 날이기 때문에 발생했습니다.맞춤형 코드 프로젝트의 코드 반복 패턴에 따라 종료 날짜를 계산합니다.