Benutzer mit den meisten Antworten
DGV gebunden + ungebundene Spalte mit Daten füllen

Frage
-
Servus Experten
Ich habe ein Datagridview an eine Datenquelle gebunden. Die Datenquelle gibt unter anderem zwei Felder zurück "Nr1" und "Nr2" die jeweils in einer eigenen Spalte angezeigt bzw aufgelistet werden, so weit so gut. Diese zwei Felder möchte ich aber gerne in einer Spalte zusammenfassen. Ich habe nun den DGV eine ungebundene Spalte "Nummer" hinzugefügt und versuche mit folgendem Code diese zu füllen:
For Each Zeile As DataGridViewRow In MonarchDataGridview1.Rows Zeile.Cells("Nummer").Value = "(" & Zeile.Cells("Nr1").Value.ToString & "," & Zeile.Cells("Nr2").Value.ToString & ")" Next
Das funzt aber nicht ... die Spalte bzw. Zellen bleiben leer ?
Danke für Tipps ... mfg eem Monarch
PS: Habe gerade festgestellt, das es funzt wenn ich warte bis die From geladen ist und den Code erst danach über ein Buttonevent ausführe. Also scheint der Code richtig zu sein, aber wo muss ich den Code hinschreiben, wenn das bereits beim Laden der Form automatisch haben möchte ? Habe es versuch am Ende von From_Load funzt leider nicht!- Bearbeitet Monarch-Falter Mittwoch, 15. Januar 2014 15:13
Antworten
-
Da ich das PS in deiner Frage erst jetzt gelesen habe, im Load-Event der Form funktioniert es bei mir. Das wird auch erst ausgeführt, wenn alles in der Form instanziert wurde. Angezeigt wird die Form aber erst nach Load.
PS: Es funktioniert nur im Load Event, da du die Datenbindung wahrscheinlich im Designer gesetzt hast. Diese wird entspechend in InitialisizeComponent erstellt. Und spätestens vor dem Load-Event sind die Daten dann geladen. (Bei den Standardeinstellungen)
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.
- Bearbeitet Tom Lambert (Koopakiller)Moderator Mittwoch, 15. Januar 2014 21:54 PS
- Als Antwort markiert Monarch-Falter Donnerstag, 16. Januar 2014 10:07
-
Hallo,
gebundene DataGridViews vertragen sich i. a. schlecht mit ungebundenen Spalten.
Wenn der Ausdruck aus zwei Spalten zusammengesetzt ist, wäre der einfache Weg eine berechnete Spalte zu verwenden, siehe DataColumn.Expression
Gruß Elmar
- Als Antwort markiert Monarch-Falter Donnerstag, 16. Januar 2014 10:06
Alle Antworten
-
Hallo,
kann der Benutzer bei dir neue Zeilen hinzufügen? Wenn ja, dann enthält die letzte Zeile keine Informationen. Mit der IsNewRow-Eigenschaft kannst du das abprüfen:For Each Zeile As DataGridViewRow In DataGridView1.Rows If Not Zeile.IsNewRow Then Zeile.Cells("Nummer") = ...
Du kannst aber auch im CellEndEdit-Event des DataGridViews die 3. Spalte aktualisieren:Private Sub DataGridView1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles MonarchDataGridview1.CellEndEdit If e.RowIndex < MonarchDataGridview1.Rows.Count - 1 Then 'Hinzufügen-Zeile auslassen If Not MonarchDataGridview1.Rows(e.RowIndex).Cells("Nr1").Value Is Nothing And Not MonarchDataGridview1.Rows(e.RowIndex).Cells("Nr2").Value Is Nothing Then 'Beide Spalten enthalten Daten MonarchDataGridview1.Rows(e.RowIndex).Cells("Nummer").Value = "(" & MonarchDataGridview1.Rows(e.RowIndex).Cells("Nr1").Value.ToString & "," & MonarchDataGridview1.Rows(e.RowIndex).Cells("Nr2").Value.ToString & ")" '3. Spalte entsprechend umformatieren End If End If End Sub
Dadurch werden die Daten automatisch bei neuen Datensätzen aktualisiert. Ggf. kannst du auch die Visible-Eigenschaft der Nr*-Spalte auf False stellen um diese auszublenden.
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke. -
Servus
das DGV ist eine reine Übersicht(kein bearbeiten möglich) und sollte wenn die Form angezeigt wird fix und fertig sein, und die Nr* spalten sind ausgeblendet=logisch :-)
Ich habe jetzt folgendes gemacht: Zwar funzt es aber der Nachteil ist halt, dass die Spalte erst zur Laufzeit des DGV gefüllt wird .... was beim Scrollen doch etwas länger dauert.
Private Sub MonarchDataGridview1_RowPostPaint(sender As Object, e As DataGridViewRowPostPaintEventArgs) Handles MonarchDataGridview1.RowPostPaint If MonarchDataGridview1.Rows(e.RowIndex).Cells("Nummer").Value <> "" Then Exit Sub MonarchDataGridview1.Rows(e.RowIndex).Cells("Nummer").Value = "(" & MonarchDataGridview1.Rows(e.RowIndex).Cells("Nr1").Value.ToString & "," & MonarchDataGridview1.Rows(e.RowIndex).Cells("Nr2").Value.ToString & ")" End Sub
- Bearbeitet Monarch-Falter Mittwoch, 15. Januar 2014 15:58
-
Da ich das PS in deiner Frage erst jetzt gelesen habe, im Load-Event der Form funktioniert es bei mir. Das wird auch erst ausgeführt, wenn alles in der Form instanziert wurde. Angezeigt wird die Form aber erst nach Load.
PS: Es funktioniert nur im Load Event, da du die Datenbindung wahrscheinlich im Designer gesetzt hast. Diese wird entspechend in InitialisizeComponent erstellt. Und spätestens vor dem Load-Event sind die Daten dann geladen. (Bei den Standardeinstellungen)
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.
- Bearbeitet Tom Lambert (Koopakiller)Moderator Mittwoch, 15. Januar 2014 21:54 PS
- Als Antwort markiert Monarch-Falter Donnerstag, 16. Januar 2014 10:07
-
Hallo,
gebundene DataGridViews vertragen sich i. a. schlecht mit ungebundenen Spalten.
Wenn der Ausdruck aus zwei Spalten zusammengesetzt ist, wäre der einfache Weg eine berechnete Spalte zu verwenden, siehe DataColumn.Expression
Gruß Elmar
- Als Antwort markiert Monarch-Falter Donnerstag, 16. Januar 2014 10:06
-
Hallo Elmar,
ich benutze ein vorhandene View, da ich diese zwar ändern könnte aber nicht abschätzen kann, ob dadurch Seiteneffekte entstehen, habe ich jetzt eben ein neue View erstellt. Ich hoffte dies vermeiden zu können, da sich die beiden Views nur minimal unterscheiden.
mfg eem monarch