DataBinding die X te

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Wolfy.

    DataBinding die X te

    Hallo Zusammen,

    folgendes : Ich stelle eine Datatable in einem Datagridview mittels Bindingsource dar.
    Da nicht alles in die Zeile passt, sind nebenan Textboxen zur Darstellung der Spalteninhalte. Diese sind über Bindingsource den Spalten zugeordnet.
    Wenn ich eine andere Zeile im Datagridview anklicke ändern sich die Textboxen nicht auf die ausgewählte Zeile.
    Was habe ich da zerschossen, denn ich denke es ging vor einigen Tagen.

    Gruß Wolfy
    Das DataBinding zwischen DGV und BS ist ja anscheinend da.
    Was sagen die DataBinding-Einstellungen der TextBox?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    (DataBindings)
    (Erweitert)
    Tag keine
    Text DataTable1BindingSource - Vorname


    Ich muß irgendwas zerschossen haben.

    Danke

    @VB1963 Doch denn die erste Zeile des DGV wird in den Textboxen angezeigt. Die bekommen nur den Wechsel der aktuellen Zeile nicht mehr mit.Wolfy
    Ist denn das Binding DGV-BS noch da? Kannst ja mal nen Button auf's Form draufziehen und dazu den Code

    VB.NET-Quellcode

    1. MessageBox.Show(DataTable1BindingSource.Position.ToString)
    Und wenn Du im DGV ne andere Zeile wählst, müsste da beim ButtonClick auch immer ne andere Zeilennummer stehen. Denn sonst ist da der Wolf verbuddelt.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Tausend Dank.

    Ihr habt mich auf den Richtigen Weg gebracht.
    Ich lasse eine Berechnung über die Daten laufen. Das habe ich an DataTable1BindingSource.CurrentChanged gebunden.
    dort hatte ich ein DataTable1BindingSource.MoveFirst() drinnen. """Das war die Ursache""".

    Nun mein nächstes Problem.
    Das Ereignis CurrentChanged ist hierbei wohl auch nicht das Richtige.
    Wenn ich jedoch ListChanged nehme bekomme ich Fehler beim Laden (System.NullReferenceEx..) in Zeile "txt = DataTable1BindingSource.Count.ToString & " / " & (dt.Rows.Count).ToString".
    Da noch keine Daten drinnen sind.
    Welches Ereignis ist hierfür geeignet?


    VB.NET-Quellcode

    1. 'Anzeige der Statistik auf der Filterseite
    2. Private Sub AenderungBindingSource() Handles DataTable1BindingSource.CurrentChanged
    3. Dim txt As String
    4. Dim txt2 As String = ""
    5. 'MsgBox("Bindingsource geändert") 'Testausgabe
    6. txt = DataTable1BindingSource.Count.ToString & " / " & (dt.Rows.Count).ToString
    7. tbAnzahl.Text = txt
    8. 'DataTable1BindingSource.MoveFirst()
    9. Dim sum As Decimal = 0
    10. Dim anzNotAbger As Integer = 0
    11. Dim anzOnline As Integer = 0
    12. Dim anzTips As Integer = 0
    13. Dim anzHUK As Integer = 0
    14. For i As Integer = 0 To DataTable1BindingSource.Count - 1
    15. Dim row = DirectCast(DirectCast(DataTable1BindingSource(i), DataRowView).Row, DataSet1.DataTable1Row)
    16. If Not IsDBNull(row.Werbegebühr) Then
    17. sum = sum + row.Werbegebühr
    18. End If
    19. If Not (row.Abgerechnet) Then
    20. anzNotAbger = anzNotAbger + 1
    21. End If
    22. If row.Online Then
    23. anzOnline = anzOnline + 1
    24. End If
    25. If row.Tip Then
    26. anzTips = anzTips + 1
    27. End If
    28. If row.MeineHUK Then
    29. anzHUK = anzHUK + 1
    30. End If
    31. Next
    32. tbWG.Text = sum.ToString & " €"
    33. tbNotAbgerechnet.Text = anzNotAbger.ToString
    34. tbOnline.Text = anzOnline.ToString
    35. tbTips.Text = anzTips.ToString
    36. tbHUK.Text = anzHUK.ToString
    37. End Sub


    Vielen Dank
    Wolfy
    für die gezeigten Berechnungen ist wohl das bs.ListChanged zuständig.
    kann durchaus sein, dass das ListChanged gelegentlich auch feuert, wenn die Berechnung noch undurchführbar ist - das musste halt abfangen.
    Hilfreich beim Abfangen kann sein die ListChangedType-Property des EventArgs.

    Eine erste Massnahme kann auch sein, die Zeile "txt = DataTable1BindingSource.Count.ToString & " / " & (dt.Rows.Count).ToString" zu löschen - sieht mir unsinnig aus, und was ist dabei das dt?
    Wann soll berechnet werden? Wann und wie ändern sich die Daten? Werden die Daten nur geladen oder können später Daten noch verändert werden? Wodurch? Auch durch den User? Kann der in der Tabelle/in den Daten rumfummeln?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Neu

    @EDR Das ist ne Anzeige für X-Datensätze von. D.h. dt ist die Datatable. mit dem bs.ListChanged und Abfangen werde ich noch probieren. Vorerst funktioniert es.
    @VaporiZed Ich werde die Tage ein anderes Ereignis nehmen und Testen.

    Danke.

    Aber noch eins.
    Ich lasse eine Liste der Datensätzen in einem DGV anzeigen.
    Rechts daneben habe ich Textboxen etc zum Ändern der ausgewählten Zeile.
    Funktioniert bis auf mein Währungsfeld (in Datatable mit Decimal definiert).
    Text eingeben etc kein Prob. Währung wird auch mit Komma dargestellt.
    Wenn ich meinen Button Übernehmen drücke (Code siehe unten). Ist nach Datatable1bindingsource.EndEdit der Inhalt = 0. Bei den "Normalen Felder (Text) funktioniert es.
    Ich stehe seit 4 Tagen auf dem Schlauch.

    VB.NET-Quellcode

    1. Private Sub btnUebernehmen_Click(Optional sender As Object = Nothing, Optional e As EventArgs = Nothing) Handles btnUebernehmen.Click
    2. Me.Validate()
    3. Dim t As String = TextBox1.Text
    4. Debug.Print("Vor:" & t)
    5. DataTable1BindingSource.
    6. DataTable1BindingSource.EndEdit()
    7. t = TextBox1.Text
    8. Debug.Print("Nach:" & t)
    9. 'DataSet1.DataTable1.AcceptChanges()
    10. End Sub


    Vielleicht habt Ihr ja wieder einen Ansatz.

    Neu

    Berechtigte Frage.
    Doch sind gebunden.
    Durch mein rumspielen und probieren habe ich was zerschossen.
    Habe mir eben ein Projekt gebaut zum Testen.
    Sch. da geht es.
    Nun heißt es suchen.

    Neu

    Danke VB1963

    ne daran liegt es nicht.
    Ich hatte irgend welche Handler im Verdacht (das ich in irgend einer Routine einen Fehler habe). >> auch nicht.
    Habe Testweise alle deaktiviert.
    Nun: Fehler lag an Spalte der Datatable. Was schief hing weiß ich nicht. Ich habe eine neue Spalte mit anderem Namen erstell. Alte Spalte gelöscht.
    Nun funktioniert alles.
    Habe vorher versucht die Spalte zu retten >> mit umbenennen long statt decimal pp. alles ohne Erfolg.
    Schade dass ich nicht die Fehlerursache gefunden habe.

    bis dann und Danke
    Wolfy