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.
Hallo,
z.B. über den get-Accessor der Property, an die du bindest.
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?
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; }
// ...
}