Gridview mit Datenfüllen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Thomas2705.

    Gridview mit Datenfüllen

    gegeben GridView

    MySQL Datenbank

    Ich weiß nicht wie ich das Gridview und entsprechende Columns mit Daten aus der DB fülle. Folgenden Anfang habe ich gemacht:

    [code=xml]
    <Grid>
    <ListView>
    <ListView.View>
    <GridView x:Name="GridView1" AllowsColumnReorder="True" ColumnHeaderToolTip="Das Gridview">
    <GridViewColumn x:Name="Col_01" Width="100" DisplayMemberBinding="{Binding Path=Vorname}" Header="Branche"/>
    <GridViewColumn x:Name="Col_02" Width="100" DisplayMemberBinding="{Binding Path=Nachname}" Header="Nachname"/><GridViewColumn x:Name="Col_03" Width="100" DisplayMemberBinding="{Binding Path=ID}" Header="ID"/>
    </GridView>
    </ListView.View>
    </ListView>
    </Grid>
    [/code]

    [code=vbnet]
    Public Class Test
    Dim cmd As New MySqlCommand
    Dim reader As MySqlDataReader
    Dim con As New MySqlConnection
    Dim DataAdapter As New MySqlDataAdapter
    Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
    Dim Gridview1 As New GridView()Dim col_01 As New GridViewColumn()
    Try
    'Verbindung zur Datenbank erstellen:con.ConnectionString = "Server=12.kasserver.com;" _
    & "password=08;" _& "database=6;" _
    & "UID=6;"
    con.Open()
    cmd.Connection = con
    cmd.CommandText = "SELECT * FROM back_branche"
    col_01.DisplayMemberBinding = New Binding("Branche")
    Gridview1.Columns.Add(col_01)
    Catch ex As ExceptionMessageBox.Show(ex.Message)
    End TryEnd Sub
    End Class
    [/code]

    Ich habe jetzt ein paar hundert Anleitungen gelesen aber entweder sind sie einfach nur falsch oder funktionieren nicht oder ich bin zu blöd. Ich bin für nachvollziebare Antworten sehr dankbar.

    Thomas

    Nachtrag: Ich habe versucht den code : [b][VB 2008][/b] [url='http://www.vb-paradise.de/programmieren/datenbankprogrammierung/10197-datagridview-befuellen/']DataGridView befüllen[/url]

    nachzubauen. Allerdings gibt es in vb10 "DataSource" nicht. Gibt es eine Alternative?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thomas2705“ ()

    klar gibts die ;)
    wozu ist das xml dokument da oben und kannst du mir bitte die kopfzeile deiner "back_branche" posten damit ich dir die spalten definieren kann

    XML-Quellcode

    1. <Grid>
    2. <ListView>
    3. <ListView.View>
    4. <GridView x:Name="GridView1" AllowsColumnReorder="True" ColumnHeaderToolTip="Das Gridview">
    5. <GridViewColumn x:Name="Col_01" Width="100" DisplayMemberBinding="{Binding Path=Vorname}" Header="Branche"/>
    6. <GridViewColumn x:Name="Col_02" Width="100" DisplayMemberBinding="{Binding Path=Nachname}" Header="Nachname"/><GridViewColumn x:Name="Col_03" Width="100"
    7. DisplayMemberBinding="{Binding Path=ID}" Header="ID"/>
    8. </GridView>
    9. </ListView.View>
    10. </ListView>
    11. </Grid>
    Hallo

    Ich habe das GridView mit XAML gebaut. Der Code soll die Daten in das GridView bringen.

    In meiner originalen DB (MySQL) gibt es eine Tabelle mit den Spalten ID (Primärschlüsselfeld) und Branchen. Die Verbindung zur DB funktioniert generell. Bisher habe ich ein ListView genutzt, allerdings wußte ich auch da nicht wie ich die Werte auf zwei Spalten verteile.

    Noch mal zum besseren Verständnis der XAML Code und beim Laden des Fensters der vb-code. Bitte beachte dass es sich um eine WPF App. handelt. Ich verwende Visual Studio Proff. 2010.

    [xaml]

    <ListView>
    <ListView.View>
    <GridView x:Name="GridView1" AllowsColumnReorder="True" ColumnHeaderToolTip="Das Gridview">
    <GridViewColumn x:Name="Col_01" Width="100" DisplayMemberBinding="{Binding Path=Vorname}" Header="Branche"/>
    <GridViewColumn x:Name="Col_02" Width="100" DisplayMemberBinding="{Binding Path=ID}" Header="ID"/>
    </GridView>
    </ListView.View>
    </ListView>

    [/xaml]

    [code=vbnet]

    Imports MySql.Data.MySqlClient
    Imports System.Data

    Public Class Test

    Dim cmd As New MySqlCommand
    Dim reader As MySqlDataReader
    Dim con As New MySqlConnection

    Dim da As New MySqlDataAdapter
    Dim dt As New DataTable
    Dim ds As New DataSet
    Dim bs As New Binding
    Dim cb As New MySqlCommandBuilder

    Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
    Dim Gridview1 As New GridView()
    Dim col_01 As New GridViewColumn()

    Try

    'Verbindung zur Datenbank erstellen:

    con.ConnectionString = "Server=xxx.kasserver.com;" _
    & "password=xxx;" _
    & "database=xxx;" _
    & "UID=d01107b6;"

    con.Open()
    cmd.Connection = con

    ds.Tables.Add(dt)
    da = New MySqlDataAdapter("SELECT * FROM back_branche", con)
    da.Fill(dt)


    [/code]

    Das ganze sieht bestimmt sehr zusammengestückelt aus, ist es auch aber wie gesagt die Hilfen im Netz waren für mich bisher nicht wirklich verwertbar.
    Ich habe zum Beispiel keine Ahnung woher ich die Abfrage nach "ID" und "Branche" bekommen soll und wie ich die Werte auf die entsprechende Spalte col_01 und col_02 verteile.
    Mehr code benutze ich derzeit nicht.
    Ja; es gibt in diesem Model nur zwei Spalten "ID" und "Branchen"

    Ich habe gerade folgendes ergänzt:

    [code=vbnet]

    Imports MySql.Data.MySqlClient
    Imports System.Data
    Imports System.Windows.Forms

    [/code]

    Durch den Import von Windows.Forms gibt es jetzt DataSource. Allerdings bringt mich das der Lösung der Aufgabe nicht wirklich näher.
    der code liest nur aus der db aus uns speichert in das datagridview1

    du brauchst nur ein dgv auf deiner form
    sowie den verweis auf MySQL.Data

    VB.NET-Quellcode

    1. Imports System.Data.SqlClient
    2. Imports MySql.Data.MySqlClient
    3. Imports System.ComponentModel
    4. Public Class Form1
    5. Dim username As String = ""
    6. Dim ip As String = ""
    7. Dim pw As String = ""
    8. Dim db As String = "mysql"
    9. Dim bindingSource1 As New BindingSource()
    10. Dim dataAdapter As New SqlDataAdapter()
    11. Dim conn As MySqlConnection = New MySqlConnection
    12. Dim myAdapter As New MySqlDataAdapter
    13. Dim myCommand As New MySqlCommand
    14. Dim myDataReader As MySqlDataReader
    15. Dim myDataSet As New DataSet(db) ' DataSet-Instanz bilden
    16. Dim dtable As New DataTable("user") ' DataTable-Instanz bilden
    17. Dim SQLAbfrage As String = "select * from user"
    18. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    19. conn.ConnectionString = "server=" & ip & ";user id=" & username & ";password=" & pw & ";database=" & db & ";"
    20. alles_aus_db_lesen()
    21. End Sub
    22. Sub alles_aus_db_lesen()
    23. 'erst mal alles was im dvg ist löschen und entladen
    24. myDataSet.Tables.Clear()
    25. dtable.Clear()
    26. DataGridView1.Columns.Clear()
    27. DataGridView1.Rows.Clear()
    28. 'nun tragen wir mal neues ein
    29. Try
    30. conn.Open() ' Verbindung öffnen
    31. Catch myerror As MySqlException
    32. MsgBox("Keine Verbindung zur Datenbank : " & myerror.Message.ToString) ' Falls Fehler : Fehler anzeigen
    33. Exit Sub
    34. End Try
    35. myCommand.Connection = conn
    36. myCommand.CommandText = SQLAbfrage
    37. myAdapter.SelectCommand = myCommand
    38. myAdapter.Fill(myDataSet)
    39. Try
    40. myDataReader = myCommand.ExecuteReader()
    41. Catch ex As Exception
    42. MsgBox(ex.Message)
    43. End Try
    44. Dim i As Integer = 0
    45. DataGridView1.Columns.Add(0, "Host")
    46. DataGridView1.Columns.Add(1, "User")
    47. Do While myDataReader.Read()
    48. DataGridView1.Rows.Add(myDataReader("Host"), myDataReader("User"))
    49. Loop
    50. myDataReader.Close()
    51. conn.Close()
    52. DataGridView1.Columns(0).ReadOnly = False '// spalte id read only?
    53. DataGridView1.Columns(2).ReadOnly = False '// spalte id read only?
    54. DataGridView1.Sort(DataGridView1.Columns(0), ListSortDirection.Ascending) ' sortiere nach spalte id so das a das oberste ist (oder 1)
    55. End Sub
    56. End Class

    sollte gehen

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Triple-Axe“ ()

    Hallo

    Ich bastle seit gestern an Deiner Vorlage herum und es geht fast gar nicht. Mitlerweile bin ich so weit das es nur noch eine Tabelle "back_branche" mit der Spalte "branche" gibt. ID und anderes habe ich weg gelassen um wenigstens in die Nähe einer Lösung zu kommen.

    Ich habe ein paar fehlende Verweise hinzugefügt (s. code) und um eine bessere Übersicht zu behalten Fehlerbehandlung weg gelassen. Es sieht jetzt so aus:

    [code=vbnet]

    Imports System.Data.SqlClient
    Imports MySql.Data.MySqlClient
    Imports System.ComponentModel
    Imports System.Windows.Forms
    Imports System.Data

    Public Class Test

    Dim username As String = "d01107b6"
    Dim ip As String = "dd8012.kasserver.com"
    Dim db As String = "d01107b6"
    Dim pw As String = "Emiljan0208"

    Dim BindingSouurce1 As New BindingSource
    Dim dataAdapter As New SqlDataAdapter
    Dim conn = New MySqlConnection
    Dim MyAdapter As New MySqlDataAdapter
    Dim MyCommand As New MySqlCommand
    Dim MyDataReader As MySqlDataReader
    Dim MyDataSet As New DataSet(db)
    Dim MyDataTable As New DataTable("branche")

    Dim SQLAbfrage As String = "select * from back_branche"

    Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)

    conn.ConnectionString = "Server=" & ip & "; password=" & pw & " ; user id =" & username & "; database= " & db & ";"
    conn.Open()

    MyCommand.Connection = conn
    MyCommand.CommandText = SQLAbfrage
    MyAdapter.SelectCommand = MyCommand
    MyAdapter.Fill(MyDataSet)


    MyDataReader = MyCommand.ExecuteReader()

    Do While MyDataReader.Read()
    GridView1. hier fehlt etwas .Add(MyDataReader("branche")) 'rows ist kein Member von Windows.Controls....
    Loop

    MyDataReader.Close()
    conn.close()

    End Sub

    End Class

    [/code]


    Stelle ich mich so blöd an oder ist es wirklich so beschissen. In anderen Beispielen wird immer wieder Bezug auf DataSource genommen. Spätestens dann geht es bei mir nicht weiter.
    Nur scheint der TE in Wpf unterwegs zu sein, und nicht in Windows.Forms.
    Zur Lsg kannich auch net wirklich viel beisteuern - ich hab immer selbstgeproggte DatenObjekte in Wpf, weil typisiertes Dataset nicht hinreichend unterstützt wird.
    Jdfs. zum Binden von Daten muß man immer die ItemsSource setzen (hier: die ItemsSource der ListView), und wenn mans richtig macht, hilft einem da auch eine art Intellisense.
    Dazu muß man aber den Typ des DataContextes mitteilen - hiermal ein Sample auch wieder mit selbstgeproggten DatenObjekten:

    XML-Quellcode

    1. <Window x:Class="TicTacToe.MainWindow"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:local="clr-namespace:TicTacToe"
    5. Title="TicTacToe game"
    6. DataContext="{x:Type local:TicTacToeViewModel}"
    7. >