Avatar billede fanatic Nybegynder
19. juni 2007 - 19:26 Der er 5 kommentarer og
1 løsning

Calender kontrol og visning af arrangementer

Hej Eksperter.
Jeg benytter ASP.NETs "Calender kontrol" til at vise et overblik over nogle arrangementer. Arrangementerne er gemt i en simpel Access-database og hentes via metoden ViewPostedArrangements(). Denne metode returnere et dataset med alle arrangementerne i. Umiddelbart virker det fint! Jeg får vist arrangementerne i kalenderen.

Dog er problemet at KUN arrangementer med følgende datoformat eks. 27-06-2007 00:00 vises i kalenderen. Så snart jeg ændrer på tiden til eks. 27-06-2007 18:00 så vises det ikke. Altså arrangementer med tiden 00:00 er de eneste som vises i kalenderen!

Hvorfor viser den ikke de arrangementer der har defineret et andet tidspunkt??

Herunder er metoden som står for at indsætte arrangementerne i kalenderen (jeg har stjålet det et sted fra):


protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
    {
        DataSet ds = new DataSet();
        ds = Arrangement.ViewPostedArrangements();

        StringBuilder strName = new StringBuilder();
        strName.Append("");
        DateTime theDay = e.Day.Date;

        string sql = "cDate='" + DateTime.Parse(theDay.ToString("d")) + "' ";
        DataRow[] drList = ds.Tables[0].Select(sql);
       
       
        foreach (DataRow drRow in drList)
        {
            strName.Append("<br/>" + drRow["cSubject"].ToString() + "");
            e.Cell.BackColor = Color.LightGoldenrodYellow;
            e.Cell.ForeColor = Color.Black;
        }
        strName.Append("");
        e.Cell.Controls.Add(new LiteralControl(strName.ToString()));
    }
Avatar billede neoman Novice
19. juni 2007 - 19:37 #1
Fordi det er hvad du beder om - at få de arrangementer som har en DateTime LIG med den givne dato plus tidspunkt 00:00:00.

Du skal nok have noget i stil med :

"cDate>='" + DateTime.Parse(theDay.ToString("d")) + "' " +
"AND cDate<'" + DateTime.Parse(theDay.AddDays(1).ToString("d")) + "' ";
Avatar billede fanatic Nybegynder
19. juni 2007 - 20:04 #2
ok... det er nok fordi at jeg ikke rigtigt forstår hvad det betyder. Hvor siger jeg at tidspunktet skal være 00:00:00 ??

Hvad er det du gør i eksemplet nederst? Du tilføjer "AND....." hvorfor?
Avatar billede fanatic Nybegynder
19. juni 2007 - 20:08 #3
Anyways, det virker det du har skrevet! 1000 Tak ;-)

Vil du svare mig på de sidste spørgsmål og sende et "svar" så får du point.
Avatar billede neoman Novice
19. juni 2007 - 20:11 #4
fordi tider/datoer er DateTime, og du kan ikke snakke om en dato alene uden tid.

Når du siger
  string sql = "cDate='" + DateTime.Parse(theDay.ToString("d")) + "' ";
så siger du, "alle cDate, hvor Dato-delen er DateTime.Parse(theDay.ToString("d")), og hvor tids-delen er 00:00:00, som er default"

det Jeg siger er, at når du skal finde DateTime værdier for en given DATO - så skal du tage alle de værdier som enten har den givne dato eller er større ("cDate>='" + DateTime.Parse(theDay.ToString("d")) ) og som også har en dato-del (uanset tidspunkt) som er mindre end dagen efter (der kommer AND ind i spillet). PÅ den måde får du alt med som foregår på datoen, og som ikke lige starter kl. 00:00:00
Avatar billede neoman Novice
19. juni 2007 - 20:13 #5
og her et svar
Avatar billede fanatic Nybegynder
19. juni 2007 - 20:18 #6
Super Tak for det!!!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester