I have got two problems after move my code from Items Adding to Items Added.
- First problem, when I'm adding first range from Data Start to Data Stop Elements the calendar don't updating. I must refresh a site to update all the elements.
- How to refresh a site ?
- Secound Problem, after Cascade deleting when I cascade delete a elements the ASP Calendar don't refresh the values. I tryed to refresh my site by refresh button on Firefox bot nothing refresh. All elements is set up on the calendar and siting there.
Here are my code of event Receiver. Please Help:
public EventReceiver1()
{
current = HttpContext.Current;
}
// Inicjacja procedury rozliczającej święta
public bool RozliczSwieta(SPSite oSiteCollection, SPWeb witryna, SPListItemCollection listaDniSwiatecznych)
{
foreach (SPListItem olistaDniSwiatecznych in listaDniSwiatecznych)
{
if (dzienStart.ToShortDateString() == Convert.ToDateTime(olistaDniSwiatecznych["Data"]).ToShortDateString())
{
dzienStart = dzienStart.AddDays(1.0);
return false;
}
}
return true;
} // Koniec RozliczSwięta
// Inicjacja procedury rozliczającej urlopy
public bool RozliczUrlopy(SPSite oSiteCollection, SPWeb witryna, SPListItemCollection listaDniUrlopowych, SPItemEventProperties properties)
{
foreach (SPListItem olistaDniUrlopowych in listaDniUrlopowych)
{
int spacja = properties.UserDisplayName.IndexOf(" ");
nazwisko = properties.UserDisplayName.ToUpper().Substring(0, spacja);
if (
(nazwisko == olistaDniUrlopowych["Nazwisko"].ToString()) &&
(dzienStart.ToLocalTime() >= Convert.ToDateTime(olistaDniUrlopowych["DataPoc"]).ToLocalTime()) &&
(dzienStart.ToLocalTime() <= Convert.ToDateTime(olistaDniUrlopowych["DataKon"]).ToLocalTime()))
{
dzienStart = dzienStart.AddDays(1.0);
return false;
}
}
return true;
} // Koniec RozliczUrlopy
/// <summary>
/// An item is being added.
/// </summary>
public override void ItemAdding(SPItemEventProperties properties)
{
base.ItemAdding(properties);
}
// Koniec ItemAdding
/// <summary>
/// An item was added.
/// </summary>
public override void ItemAdded(SPItemEventProperties properties)
{
base.ItemAdded(properties);
if (properties.List.Title == "Wpisy")
{
SPSite oSiteCollection = new SPSite("http://gzawistowskilap");
SPWeb witryna = oSiteCollection.RootWeb;
SPListItemCollection listaDniSwiatecznych = witryna.Lists["DR2013 Święta"].Items;
SPListItemCollection listaDniUrlopowych = witryna.Lists["ListaUrlopow2012"].Items;
SPList lstOtherList = properties.Web.Lists["Szczegoly"];
// Stworzenie dwóch zmiennych typu data, jednej opisującej dzień Startowy, drugiej opisującej dzień końcowy
dzienStart = new DateTime();
dzienStop = new DateTime();
// Podstawienie odpowiednich pól z propetisów pod wcześniej stworzone zmienne
dzienStart = Convert.ToDateTime(properties.AfterProperties["DzienStart"]).ToUniversalTime();
// Zaistniała też potrzeba odjęcia dwóch godzin
// dzienStart = dzienStart.AddHours(1.0);
dzienStop = Convert.ToDateTime(properties.AfterProperties["DzienStop"]).ToUniversalTime();
// dzienStop = dzienStop.AddHours(1.0);
// Uruchomienie pętli while, która to pętla będzie się wykonywać przez czas kiedy to zmienna dzienStart będzie mniejsza bądz równa zmiennej dzienStop
while (dzienStart <= dzienStop)
{
if (!RozliczSwieta(oSiteCollection, witryna, listaDniSwiatecznych))
{
continue;
}
if (!RozliczUrlopy(oSiteCollection, witryna, listaDniUrlopowych, properties))
{
continue;
}
// Sprawdzenie Ifem, czy wybrane dni są równe sobocie, lub niedzieli
if (dzienStart.DayOfWeek.ToString() == "Saturday" || dzienStart.DayOfWeek.ToString() == "Sunday")
{
// Jeżeli zmienna ciągle inkrementowana dzienStart jest równa sobocie, lub niedzieli, to wwtedy następuje powiększenie dnia o jeden, zaś potem następuje kontynuacja pętli
dzienStart = dzienStart.AddDays(1.0);
continue;
}
// W przeciwnym wypadku następuje dodanie obiektu do listy
else
{
SPListItem item = lstOtherList.Items.Add();
item["Kontrakt"] = properties.AfterProperties["Kontrakt1"];
item["Pracownik"] = properties.UserDisplayName;
item["Dzien"] = dzienStart;
item["Procenty"] = properties.AfterProperties["Procenty"];
SPList listaWpisy = properties.Web.Lists["Wpisy"];
SPListItemCollection listaKontrakty = listaWpisy.Items;
foreach (SPListItem kontrakt in listaKontrakty)
{
item["ID Czas Pracy Wpisy"] = new SPFieldLookupValue(kontrakt.ID, kontrakt.ID.ToString());
}
dzienStart = dzienStart.AddDays(1.0);
item.Update();
}
}
// SPUtility.Redirect("http://gzawistowskilap/SitePages/Close.aspx?IsDlg=1", SPRedirectFlags.Default, current);
}