DGV wird nicht gefüllt

  • C#

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von VB1963.

    DGV wird nicht gefüllt

    Hallo,

    habe schön öfters mit sql bzw. access gearbeitet, aber immer nur mit listviews und nun das erste mal mit dem datagridview-control.
    Habe eine ganz einfache frage... ich habe eine datenbank-klasse die eine methode getData hat dieser methode gebe ich ein query und ein bindungsource mit und diese
    methode soll mir dann das bindingsource mit den daten aus dem query füllen. die datetable wird befüllt (habe ich mit table.rows.count überprüft) aber leider werden die datensätze nicht im dvg dargestellt.
    bestimmt ein dummer fehler aber ich komm nicht drauf auch nicht nach etlichen foren-posts.. da die konstellation nicht ganz so war wie bei mir.

    Das DGV hat im Designer als datenquelle das bindingSource1 erhalten.

    C#-Quellcode

    1. public void GetData(string query, BindingSource bindingSource) {
    2. OleDbConnection connection = new OleDbConnection(this.connectionString);
    3. OleDbDataAdapter adapter = new OleDbDataAdapter(query, connection);
    4. OleDbCommandBuilder commandBuilder = new OleDbCommandBuilder(adapter);
    5. DataTable table = new DataTable();
    6. adapter.Fill(table);
    7. bindingSource.DataSource = table;
    8. connection.Close();
    9. }


    C#-Quellcode

    1. Database db = new Database();
    2. db.GetData("SELECT * FROM kunden", bindingSource1);
    3. dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
    4. dataGridView1.Update();


    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    @windowsfan
    Ich denke, deine Methode bedient zwar die BindingSource aber sie wird nachher nicht zugewiesen- sollte das Argument nicht als Referenz übergeben werden?

    C#-Quellcode

    1. public void GetData(string query, ref BindingSource bindingSource)
    2. {
    3. }

    oder besser du machst eine Function und gibst eine Bindingsource zurück, die du dann an der Datasource deines DGV's anwendest

    C#-Quellcode

    1. public BindingSource GetData(string query)
    2. {
    3. //
    4. //Daten laden
    5. //
    6. Bindingsource bs = new Bindingsource();
    7. bs.DataSource = table;
    8. return bs;
    9. }

    Der Code ist von VB nach C# übersetzt und nicht getestet... (habs's nicht so in C#)
    bliebe noch anzumerken, dass so eine Vorgehensweise insgesamt bisserl abwegig ist.
    BindingSource ist dazu designed, im FormDesigner als Komponente aufs Form gepackt zu werden.

    Weiters zeigt sie ihre ganzen Fähigkeiten erst, wenn man auch mit typisierten Datenmodellen arbeitet - eine code-generierte DataTable verschließt da enorme Möglichkeiten von vornherein.