Erweitern Sie die Wiederholung und CalendarDate:Event EndDate wird für wiederkehrende Ereignisse nicht automatisch berechnet

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/45232

Frage

Ich habe den folgenden Code erstellt, um einen wiederkehrenden Eintrag in der Kalenderliste mit dem Namen zu speichern 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)
        {

        }

Wenn ich das Obige mit der Wiederholungsregel speichere als Repeat every 1 day for 10 occurences Dann wird das Element ordnungsgemäß gespeichert und in der Ansicht „Aktuelle Ereignisse“ werden alle Instanzen angezeigt. Beim Abrufen des wiederkehrenden Eintrags erhalte ich jedoch nur ein Ergebnis, d. h. zum Startdatum.Im Folgenden finden Sie den Code zum Abrufen wiederkehrender Werte:

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);

Das Ergebnis wird nur angezeigt, wenn oQueryBookings.CalendarDate = date; gleicht 11/09/2012 08:00:00 und es werden keine Elemente für Datumsangaben danach zurückgegeben, selbst wenn die Instanzen für diese Datumsangaben bis vorhanden sind 19/09/2012 08:00:00

Die Abfrage gibt das gesamte Element zurück, wenn ich das festgelegt habe recEvent["EndDate"] Zu 19/09/2012 08:00:00 beim Speichern des Artikels.Ich möchte, dass das Enddatum für wiederkehrende Elemente im Benutzerformular auf denselben Tag festgelegt wird (no user would want to calculate the last date of his occurence for recurring pattern with no end date) und es sollte beim Speichern automatisch berechnet werden. Wie ist das möglich?

Wenn ich den Eintrag über die Sharepont-Benutzeroberfläche vornehme, wird dieses Enddatum automatisch berechnet, auch wenn es auf denselben Tag eingestellt ist und es sich um einen wiederkehrenden Eintrag handelt.

Bitte geben Sie an, wo mache ich einen Fehler?Ist es beim Speichern oder beim Abrufen der Datensätze?oder liegt es daran, dass EndDate ist das gleiche Datum wie StartDate?Freundlich helfen.

War es hilfreich?

Lösung

Das Problem lag daran, dass Startdatum und Enddatum am selben Tag lagen.Maßgeschneidert Code von Code Project um das Enddatum nach wiederkehrendem Muster zu berechnen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top