BindingSource/ DataReader Frage



  • Hallo,

    Ich habe ein BindingSource mit einer DataGridView verknüpft, jetzt will ich in dem Grid gern Daten anzeigen, welche ich über eine DataReader- Abfrage an einen SQL Server erhalten habe.
    Anstatt die richtigen Daten anzuzeigen, bekomme ich eine Tabelle angezeigt, welche die Datentabelle beschreibt (also die einzelenen Columns, ob Null erlaubt ist, was da für Werte rein passeen etc.).

    DataGridView DGVFound = new DataGridView();
       BindingSource bs = new BindingSource();
    
      SqlCommand SQlSearch = new SqlCommand("SELECT * from Owners WHERE Firstname =" + name + " OR Lastname =" + name, con);
                    con.Open();
    
                    SqlDataReader sqlDR = SQlSearch.ExecuteReader();
    
                    if (sqlDR.HasRows)
                    {
                        DataTable schemaTable = sqlDR.GetSchemaTable();
                        bs.DataSource = schemaTable;
                        DGVFound.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
                        DGVFound.DataSource = bs;
                        this.Show();
    //usf.
    


  • Ja Über GetSchemaTable bekommst Du nur Datenstrukturinformationen!

    folgendes Beispiel habe ich im Netz gefunden

    Versender.DataSource = myDataReader;
    Versender.DataValueField="Firmen-Nr";
    Versender.DataTextField="Firma";
    Versender.DataBind();
    

    Da wird ein Reader direkt an ein Steuerelement gebunden.
    Probier es doch mal aus und steck diesen Deinen Reader direkt ans DataSource des DataGridView.
    Hier gefunden

    Ansonsten müsstes Du ein DataSet/DataTable manuell beladen über:

    while(DeinLeser.Read())
    {
       dr[0] = DeinLeser.Get...();
       dr[1] = DeinLeser.Get...();
    
       dt.Add(dr); 
    }
    
    bs.DataSource = dt;
    

    und es dann dem Grid geben.

    Gruss sclearscreen



  • DataTable dt = new DataTable();
    dt.Load(IDataReader);
    


  • Danke sclear und Noodles, letzterem für die Idee mit dem Interface und der daraus resultierenden Erkenntnis, mich damit mal näher auseinanderzusetzten. Kann ja einiges, das Zeug 😃


Anmelden zum Antworten