Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
berechneten Wert in DataGridView darstellen
kstanger
myCSharp.de - Member



Dabei seit:
Beiträge: 79

Themenstarter:

berechneten Wert in DataGridView darstellen

beantworten | zitieren | melden

Hallo,
ich habe eine Liste von Objekten, die ich in einem DataGridView (DGV) darstelle. Ich möchte aber in einer Spalte einen berechneten Wert darstellen. Mir ist klar, dass DGV nur darstellt und nicht berechnet. Irgendwo auf dem Weg vom Objekt über die BindingSource muss eine Methode mit dem Berechnungsalgorithmus sein. Ich weiß nicht, wo ich das machen muss.
Kann mir jemand sagen, wie das geht oder wo das dokumentiert ist? Ich dachte, es würde mit Linq gehen, aber da habe ich nicht gefunden wie man eine Methode dort einbaut.
Karl Stanger
private Nachricht | Beiträge des Benutzers
Pinot
myCSharp.de - Member



Dabei seit:
Beiträge: 10

beantworten | zitieren | melden

Hallo,

z.B. über den get-Accessor der Property, an die du bindest.
private Nachricht | Beiträge des Benutzers
kstanger
myCSharp.de - Member



Dabei seit:
Beiträge: 79

Themenstarter:

beantworten | zitieren | melden

Mein Code funktioniert nicht:


    public class Timing
    {
        private string _uhrzeit;

        public Timing()
        {
        }

        public Timing(int tagminute, Lichtquelle typ, int nummer, BZustand zustand)
        {
            Tagminute = tagminute;
            Typ = typ;
            Nummer = nummer;
            Zustand = zustand;
        }

        public int Tagminute
        {
            get => UhrzeitToTotalmin(_uhrzeit);
            set => _uhrzeit = TotalminToUhrzeit(value);
        }
        public Lichtquelle Typ { get; set; }
        public int Nummer { get; set; }
        public BZustand Zustand { get; set; }
    }
Die Spalte im DGV habe ich so definiert:


            DataGridViewTextBoxColumn dgvTextUhrzeit = new DataGridViewTextBoxColumn()
            {
                HeaderText = "Uhrzeit",
                DataPropertyName = "Tagminute",
            };

Was mache ich da falsch?
Karl Stanger
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.487

beantworten | zitieren | melden

Du hast die Logik bzgl. der Eigenschaft und des Feldes vertauscht - bei dir wird _uhrzeit ja nie gesetzt, außer der Setter wird dafür explizit aufgerufen.
Du mußt es andersherum programmieren:


public class Timing
{
    // ...

    public string Uhrzeit
    {
        get => TotalminToUhrzeit(Tagminute);
        set => Tagminute = UhrzeitToTotalmin(value);
    }

     public Tagminute { get; set; }
     // ...
}
private Nachricht | Beiträge des Benutzers
kstanger
myCSharp.de - Member



Dabei seit:
Beiträge: 79

Themenstarter:

beantworten | zitieren | melden

Danke!
Irgendwie habe ich da auf dem Schlauch gestanden.
Karl Stanger
private Nachricht | Beiträge des Benutzers