Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Heyho,

ich versuche einen Kalender mit Feiertagen einzufärben, allerdings soll die tatsächliche momentane Auswahl eine andere Farbe haben. (1.1. und 6.1. sollen rot sein, mit Maus-klick auf den 7.1. soll dieser aber als momentane Auswahl gelb sein)

Das Problem: Ich habe zwar einen Weg gefunden bestimmte definierte Tage als Auwahl einzufärben, aber dazu zählt auch die Auswahl mit der Maus - die wiederum möchte ich in einer anderen Farbe haben. Hier mal der Code:

protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
        {
            DateTime[] feiertage = Feiertage.Berechnen();

            foreach (DateTime feiertag in feiertage)
            {
                Calendar1.SelectedDates.Add(feiertag);                 
            }
            Calendar1.SelectedDayStyle.BackColor = System.Drawing.Color.Red;
            Calendar1.TodayDayStyle.BackColor = System.Drawing.Color.Yellow;
        }

Was ich eigentlich suche ist wie ich Zellen einfärben kann ohne dass sie als "Auswahl" (Selected blabla) zählen.

Hat da jemand Ideen?

 

Grüße

Tician

Gelöst von RipperFox

Zur Lösung
  • Autor

Moin,

Ich benutze den Kalender von System.Web.UI.WebControls und der hat anders als der MonthCalendar  leider kein "AddBoldedDate". Das day-render Event benutze ich ja schon (wie vielleicht aus meinem Code ersichtlich), aber da habe ich eben nur eine Methode gefunden um eine Farbe zu ändern und finde nichts um wiederum andere Tage in einer anderen Farbe anzuzeigen und nicht alle in derselben.

Hallo @Tician!

Ich verstehe das Problem nicht so ganz, der Artikel, den @RipperFox verlinkt hat, macht doch genau das.

In der Methode werden abhängig von einer Bedingung Tage eingefärbt. 

Wenn du deine Bedingung sauber spezifizierst, sollte das doch überhaupt kein Problem sein, oder?

Auszug aus dem Artikel:

void DayRender(Object source, DayRenderEventArgs e) 
      {

         // Change the background color of the days in the month
         // to yellow.
         if (!e.Day.IsOtherMonth && !e.Day.IsWeekend)
            e.Cell.BackColor=System.Drawing.Color.Yellow;

         // Add custom text to cell in the Calendar control.
         if (e.Day.Date.Day == 18)
            e.Cell.Controls.Add(new LiteralControl("<br />Holiday"));

      }

Die Properties sind so sprechend, das muss nicht mal in Pseudocode übersetzt werden.

Löst das dein Problem? Wenn nein, musst du zumindest, damit ich es verstehe, etwas präziser werden, was du schon probiert hast und was nicht.

Gruß, Goulasz :goulasz: 

  • Autor

Hi @Goulasz

Du hast recht, ich habe herausgefunden wie es geht. Weiß nicht was mich da geritten hat, ich wollte irgendwie "e" definieren und das geht halt nicht. Ich hatte nicht verstanden, dass das Ereignis für jeden Tag gilt.

Lösung sieht also nun so aus:

        protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
        {
            DateTime[] feiertage = Feiertage.Berechnen();

            foreach (DateTime feiertag in feiertage)
            {
                if ((e.Day.Date.Day == feiertag.Day) && (e.Day.Date.Month == feiertag.Month))
                {
                    e.Cell.BackColor = System.Drawing.Color.Red;
                }
            }
        }

Danke!

Bearbeitet von Tician

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.