Hallo,
Auch wenn ich gestern erst ein Thema durch hatte, muss ich euch direkt wieder ausfragen... Ich weiß nicht ob ein neues Thema sinnvoll ist, aber ich mach das jetzt mal so. (Notfalls hängt es Bitte an)
Ich habe zwei DGV's die beide mit einem DataSet in Verbindung stehen. In dem LS_GewichteDataGridView werden eigentlich nur Daten aus einer DataTable (LS_Gewichte, kurz LS_G) abgerufen. Eine Spalte der zweiten DataTable (Laststufen, kurz LS) wird mittels Code errechnet. Beide DataTable sind miteinander verknüpft: LS_G = parent, LS = child.
Auslöser für die Berechnung soll durch jede Änderung der beiden DGV's hervorgerufen werden. Hierbei wird ein Wert aus einer Zeile der LS_G mit dem Wert der vorherigen Zeile addiert (Anfangswert = 0).
Wenn ich in LS_G eine Zeile lösche und den Fokus im DGV auf eine andere Zeile lege, funktioniert es soweit wunderbar. Wenn ich allerdings wieder eine neue Zeile anlegen möchte, kann ich zwar eine Auswahl treffen, aber die neue Zeile wird direkt wieder gelöscht und der Fokus springt wieder auf die erste Zeile in der DGV.
Hier mal ein Codeschnipsel (kurz gehalten, nur mit dem Event "CellLeave"):
In " Last dieser Laststufe" werden nur die Werte in LS_G summiert die zur Markierten Zeile der child-Table gehören. Macht keine Probleme
Sobald ich aber die Schleife " Aufsummierung der Laststufen für DGV " auskommentiere, kommt das oben beschriebene Problem nicht vor, aber diese Berechnung ist eigentlich die wichtigste!
Liegt das Problem an der Beziehung zwischen den beiden DataTable's?
Habt ihr Rat??
Und welches Event/s hierfür am besten geeignet ist/sind, ist mir auch noch nicht klar..
Auch wenn ich gestern erst ein Thema durch hatte, muss ich euch direkt wieder ausfragen... Ich weiß nicht ob ein neues Thema sinnvoll ist, aber ich mach das jetzt mal so. (Notfalls hängt es Bitte an)
Ich habe zwei DGV's die beide mit einem DataSet in Verbindung stehen. In dem LS_GewichteDataGridView werden eigentlich nur Daten aus einer DataTable (LS_Gewichte, kurz LS_G) abgerufen. Eine Spalte der zweiten DataTable (Laststufen, kurz LS) wird mittels Code errechnet. Beide DataTable sind miteinander verknüpft: LS_G = parent, LS = child.
Auslöser für die Berechnung soll durch jede Änderung der beiden DGV's hervorgerufen werden. Hierbei wird ein Wert aus einer Zeile der LS_G mit dem Wert der vorherigen Zeile addiert (Anfangswert = 0).
Wenn ich in LS_G eine Zeile lösche und den Fokus im DGV auf eine andere Zeile lege, funktioniert es soweit wunderbar. Wenn ich allerdings wieder eine neue Zeile anlegen möchte, kann ich zwar eine Auswahl treffen, aber die neue Zeile wird direkt wieder gelöscht und der Fokus springt wieder auf die erste Zeile in der DGV.
Hier mal ein Codeschnipsel (kurz gehalten, nur mit dem Event "CellLeave"):
Quellcode
- Private Sub LSIntervallDataGridView_CellValueChanged(sender As Object, e As EventArgs) Handles LS_GewichteDataGridView.CellLeave, LaststufenDataGridView.CellLeave
- Dim SummeLast As Double = 0, Flaeche As Double, LS_last As Double = 0, bFlag As Boolean = False, SummeLaststufe As Double = 0
- '## Fläche und Lasten ####################################
- Dim ZelleRow = DirectCast(DirectCast(ZelleBindingSource(ZelleBindingSource.Position), DataRowView).Row, Standard.ZelleRow)
- Flaeche = CDbl(ZelleRow.Flaeche)
- '*********** Last dieser Laststufe ***********************
- Dim LaststRow = DirectCast(DirectCast(LaststufenBindingSource(LaststufenBindingSource.Position), DataRowView).Row, Standard.LaststufenRow)
- For Each GewichtRow As Standard.LS_GewichteRow In Standard1.LS_Gewichte
- If GewichtRow.LS_ID = LaststRow.ID Then
- For Each GRow As Standard.GewichteRow In Standard1.Gewichte
- If GewichtRow.G_ID = GRow.ID Then
- LS_last = LS_last + GRow.Kraft
- End If
- Next
- End If
- Next
- DeltaSigma_Value.Text = Math.Round((LS_last * 0.001 * dHebel) / Flaeche, 6).ToString
- '*********************************************************
- '************* Aufsummierung der Laststufen für DGV ******
- For Each SummeRow As Standard.LaststufenRow In Standard1.Laststufen
- If SummeRow.ZelleID = ZelleRow.ID Then
- SummeLaststufe = SummeLaststufe + SummeRow.SumAuflast
- SummeRow.SumLaststufen = Math.Round((SummeLaststufe * 0.001 * dHebel) / Flaeche, 4)
- End If
- Next
- '*********************************************************
- '#########################################################
- End Sub
In " Last dieser Laststufe" werden nur die Werte in LS_G summiert die zur Markierten Zeile der child-Table gehören. Macht keine Probleme
Sobald ich aber die Schleife " Aufsummierung der Laststufen für DGV " auskommentiere, kommt das oben beschriebene Problem nicht vor, aber diese Berechnung ist eigentlich die wichtigste!
Liegt das Problem an der Beziehung zwischen den beiden DataTable's?
Habt ihr Rat??
Und welches Event/s hierfür am besten geeignet ist/sind, ist mir auch noch nicht klar..
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ludl8615“ ()