Toon posts:

[ASP.NET C#] Calenderdagen inkleuren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Na een item te hebben gekozen uit een listbox, haalt het id vh item gegevens uit de db en parst ze.
één van de gegevens zijn een begin & einddatum

met deze begin & einddatum wil ik tonen op een calendercontrol en de dagen ertussen inkleuren

ik heb dus zoiets:
Calendar1.SelectedDate = evRow.Start_Date;
TimeSpan ts = evRow.End_Date.Subtract(evRow.Start_Date);
Calendar1.SelectedDate = evRow.Start_Date;
for (int i = 1; i < ts.Days; i++ )
{

Calendar1.SelectedDayStyle.BackColor = Color.Orange;
Calendar1.SelectedDate.AddDays(1);
}
maar ie kleurt enkel de eerste dag :?

wat ben ik vergeten :?

Verwijderd

code:
1
Calendar1.SelectedDate.AddDays(1);


Moet dit niet:
code:
1
Calendar1.SelectedDate.AddDays(i);

zijn?

Verwijderd

Topicstarter
nee dan gaat ie
1 + 2 + 3 tot en met het aantal dagen gaan

Verwijderd

Maar wat is dat het nut van de for-loop?

Verwijderd

Topicstarter
dus ie loopt door het aantal dagen verschil tussen eind & startdatum
dus:
ga naar begindatum, kleur oranje
verhoog met een dag, kleur oranje

tot en met laatste dag

of kan dit op een betere manier?

Verwijderd

Weet niet of ik je nou begrijp het is niet echt een goede manier van doen lijkt me maar toch het zou moeten werken alleen je moet wel dit doen:


Calender1.SelectedDate = Calendar1.SelectedDate.AddDays(1);

Verwijderd

Topicstarter
Verwijderd schreef op donderdag 08 maart 2007 @ 14:39:
Weet niet of ik je nou begrijp het is niet echt een goede manier van doen lijkt me maar toch het zou moeten werken alleen je moet wel dit doen:


Calender1.SelectedDate = Calendar1.SelectedDate.AddDays(1);
ok nu verhoogt ie de dagen prima
14/03/2007 64 14/03/2007 15/03/2007 16/03/2007 17/03/2007 18/03/2007 19/03/2007 20/03/2007 21/03/2007 22/03/2007 23/03/2007 24/03/2007 25/03/2007 26/03/2007 27/03/2007 28/03/2007 29/03/2007 30/03/2007 31/03/2007 01/04/2007 02/04/2007 03/04/2007 04/04/2007 05/04/2007 06/04/2007 07/04/2007 08/04/2007 09/04/2007 10/04/2007 11/04/2007 12/04/2007 13/04/2007 14/04/2007 15/04/2007 16/04/2007 17/04/2007 18/04/2007 19/04/2007 20/04/2007 21/04/2007 22/04/2007 23/04/2007 24/04/2007 25/04/2007 26/04/2007 27/04/2007 28/04/2007 29/04/2007 30/04/2007 01/05/2007 02/05/2007 03/05/2007 04/05/2007 05/05/2007 06/05/2007 07/05/2007 08/05/2007 09/05/2007 10/05/2007 11/05/2007 12/05/2007 13/05/2007 14/05/2007 15/05/2007 17/05/2007
eerste vetjes tekst = begindatum
2de = aantal dagen tussen
3de = einddatum

hij vergeet precies wel 2 dagen op het eind :?
en helaas kleurt ie ze ook niet :?

Verwijderd

Beste om te doen trouwens lijkt mij om je begindatum op een variabele te zetten. en je einddatum op een andere variabele. een loopje maken die controleert of je begindatum kleiner of gelijk is dan de einddatum en in dit geval die datum selecteren in datumveld en inkleuren dan datum met 1 dag verhogen dan pakt hij ze allemaal

  • Serpie
  • Registratie: Maart 2005
  • Laatst online: 01-07-2023
for (int i = 0; i <= ts.Days; i++ ) :?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 10:24

gorgi_19

Kruimeltjes zijn weer op :9

Waarom werk je niet met de SelectedDates property, maar met c.SelectedDate ?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
wel verschillende wegen leiden naar rome O-)

ik heb het kunnen oplossen via
Calendar1.SelectedDate = evRow.Start_Date;
arrDates.Add(Calendar1.SelectedDate);
TimeSpan ts = evRow.End_Date.Subtract(evRow.Start_Date);

for (int i = 1; i < ts.Days; i++)
{

Calendar1.SelectedDate = Calendar1.SelectedDate.AddDays(Convert.ToDouble(1));
arrDates.Add(Calendar1.SelectedDate);
}
arrDates.Add(evRow.End_Date);
ik voeg alle datums die ik moet hebben in een arraylist
protected void CalendarProc(object sender, DayRenderEventArgs e)
{
e.Day.IsSelectable = false;
for (int i = 0; i < arrDates.Count; i++)
{
if (e.Day.Date == (DateTime)arrDates[i]) {
e.Cell.BackColor = Color.Orange;

}
}
}
en hier loop ik erdoor (dit is de dayrender methode)
het werkt prima, alle datums tussen begin & einddatum worden ingekleurd
maar er is 1 grote maar :(

als een event verschillende maanden inneemt, vb 25-januari tot 10 februari
en ik klik op de knop om naar de volgende maand te gaan, "vergeet ie" alles en kleurt ie niks in :'(

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 10:24

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op donderdag 08 maart 2007 @ 15:08:
als een event verschillende maanden inneemt, vb 25-januari tot 10 februari
en ik klik op de knop om naar de volgende maand te gaan, "vergeet ie" alles en kleurt ie niks in :'(
Daar heb je de selecteddays voor, laat je de viewstate het probleem oplossen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
idd, zal dat es bekijken

Verwijderd

Topicstarter
ok opgelost
Calendar1.SelectedDate = evRow.Start_Date;
arrDates.Add(Calendar1.SelectedDate.ToShortDateString());
TimeSpan ts = evRow.End_Date.Subtract(evRow.Start_Date);

for (int i = 1; i < ts.Days; i++)
{

Calendar1.SelectedDate = Calendar1.SelectedDate.AddDays(Convert.ToDouble(1));
arrDates.Add(Calendar1.SelectedDate.ToShortDateString());
}
arrDates.Add(evRow.End_Date.ToShortDateString());

Session.Add("Dates", arrDates);
Calendar1.SelectedDate = evRow.Start_Date;
protected void CalendarProc(object sender, DayRenderEventArgs e)
{
//Calendar1.SelectedDate = mDT;
//Calendar1.SelectedDayStyle.BackColor = Color.Orange;
//for (int i = 0; i < mInt; i++)
//{
// CalendarDay cday = new CalendarDay(Calendar1.SelectedDate.AddDays(Convert.ToDouble(1)),false,false,false,false,"1");

try
{
e.Day.IsSelectable = false;
ArrayList arrDatums = (ArrayList)Session["Dates"];

foreach (String var in arrDatums)
{
if (e.Day.Date == Convert.ToDateTime(var))
{
e.Cell.BackColor = Color.Orange;

}
}
Calendar1.SelectedDate = Convert.ToDateTime(arrDatums[0]);
}
catch (Exception )
{

// Label3.Text = "blabla" + ex.Message;
throw;
}


}
maar nu heb ik natuurlijk een nieuw probleem |:(
bij een nieuw item blijft de maand op het vorige staan ipv naar de begin datum van het nieuwe item te gaan :?

dus vb oud item = mei tot juni
ik klik de calendar tot ik in juni ben
ik klik op nieuw item (vb januari tot februari) en verwacht dat de calendar naar de beginmaand (januari) gaat maar ie toont juni :?
heb dit geprobeerd met Calendar1.SelectedDate = evRow.Start_Date;
maar noppes :/
pff thanks

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 10:24

gorgi_19

Kruimeltjes zijn weer op :9

Ram eens op F5, zodat je in debug mode gaat en zet eens wat breakpoints. Volg vervolgens eens je programmaflow, zodat je weet wat waar gebeurd.

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1