Hallo zusammen,
ich hab mal die Forum-Suche bemüht und ein paar interessante Beiträge gefunden, was die Themen Linq <-> DataGridView angeht.
Allerdings konnte ich zu meinem Problem nichts finden:
Ich möchte Linq-Abfragen in DataGridViews anzeigen und manipulieren. Allerdings nur bestimmte Spalten aus der Abgefragten Tabelle der Linq-Abfrage. Und diese sollten sich auch aktualisieren.
Hier mal mein erster Lösungsansatz:
So Funktioniert alles... Allerdings wird mir so auch jede Tabellenspalte ausgegeben
Mein zweiter lösungsansatz:
Hierbei bekomme ich zur Laufzeit folgende Fehlermeldung:
Spoiler anzeigen
Irgendwo nachvollziehbar... Ich wähle nur spezifische Spalten aus, daher ist es vielleicht keine vollständige "Table" mehr. Allerdings wüsste ich nicht wie ich es retten kann.
Lasse ich weg, geht es. Er zeigt nur die Spalten an, die ich will. Allerdings sind diese dann nicht mehr bearbeitbar. Und aktualisieren tun sie sich natürlich auch nicht.
Hat jemand Ideen was ich falsch mache? Oder wie ich es besser machen kann?
Arbeite zur Zeit dieses Buch durch: Datenbankprogrammierung mit Visual Basic 2012 leider hilft es in diesem Zusammenhang wenig. Oder ich find die richtige Stelle nicht
Vielen Dank schon mal an die, die sich der Sache annehmen!
Gruß,
Hendrik
ich hab mal die Forum-Suche bemüht und ein paar interessante Beiträge gefunden, was die Themen Linq <-> DataGridView angeht.
Allerdings konnte ich zu meinem Problem nichts finden:
Ich möchte Linq-Abfragen in DataGridViews anzeigen und manipulieren. Allerdings nur bestimmte Spalten aus der Abgefragten Tabelle der Linq-Abfrage. Und diese sollten sich auch aktualisieren.
Hier mal mein erster Lösungsansatz:
VB.NET-Quellcode
- Private Sub Mitarbeiter_DoubleClick(sender As Object, e As EventArgs) Handles MitarbeiterTreeView.NodeMouseDoubleClick
- Cursor = Cursors.WaitCursor
- Dim AzAcBinding As New BindingSource
- Dim UID As Integer = CInt(MitarbeiterTreeView.SelectedNode.Name)
- Dim AzAc = From Result In DB.PAAzAc
- Where Result.Rohdaten.PAInternUID = UID
- Select Result
- DB.Refresh(Data.Linq.RefreshMode.OverwriteCurrentValues, AzAc)
- AzAcBinding.DataSource = AzAc
- AzAcNavigator.BindingSource = AzAcBinding
- AzAcDataGridView.DataSource = AzAcBinding
- Cursor = Cursors.Default
- End Sub
So Funktioniert alles... Allerdings wird mir so auch jede Tabellenspalte ausgegeben
Mein zweiter lösungsansatz:
VB.NET-Quellcode
- Private Sub Mitarbeiter_DoubleClick(sender As Object, e As EventArgs) Handles MitarbeiterTreeView.NodeMouseDoubleClick
- Cursor = Cursors.WaitCursor
- Dim AzAcBinding As New BindingSource
- Dim UID As Integer = CInt(MitarbeiterTreeView.SelectedNode.Name)
- Dim AzAc = From Result In DB.PAAzAc
- Where Result.Rohdaten.PAInternUID = UID
- Select Firma = Result.AzAcFirm,
- Account = Result.AzAcAcc
- DB.Refresh(Data.Linq.RefreshMode.OverwriteCurrentValues, AzAc)
- AzAcBinding.DataSource = AzAc
- AzAcNavigator.BindingSource = AzAcBinding
- AzAcDataGridView.DataSource = AzAcBinding
- Cursor = Cursors.Default
- End Sub
Hierbei bekomme ich zur Laufzeit folgende Fehlermeldung:
InvalidOperationException wurde nicht behandelt.
Der Typ "VB$AnonymousType_0`2[System.String,System.String]" ist nicht als "Table" zugeordnet.
Der Typ "VB$AnonymousType_0`2[System.String,System.String]" ist nicht als "Table" zugeordnet.
Irgendwo nachvollziehbar... Ich wähle nur spezifische Spalten aus, daher ist es vielleicht keine vollständige "Table" mehr. Allerdings wüsste ich nicht wie ich es retten kann.
Lasse ich weg, geht es. Er zeigt nur die Spalten an, die ich will. Allerdings sind diese dann nicht mehr bearbeitbar. Und aktualisieren tun sie sich natürlich auch nicht.
Hat jemand Ideen was ich falsch mache? Oder wie ich es besser machen kann?
Arbeite zur Zeit dieses Buch durch: Datenbankprogrammierung mit Visual Basic 2012 leider hilft es in diesem Zusammenhang wenig. Oder ich find die richtige Stelle nicht
Vielen Dank schon mal an die, die sich der Sache annehmen!
Gruß,
Hendrik
Der Vorteil der Intelligenz besteht darin, sich dumm stellen zu können. Das Gegenteil davon ist schon schwieriger.