Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Progressbar beim Füllen eines Dataadapters
CHLINDE - Mi 24.09.08 19:11
Titel: Progressbar beim Füllen eines Dataadapters
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| private bool DataGridFuellen(string strDatenbankPfad, string strTabellenName) { try { OleDbConnection Datenbankverbindung = DatenbankVerbindungOeffnen(strDatenbankPfad);
OleDbCommand Befehl = new OleDbCommand(); OleDbDataAdapter DatenAdapter = new OleDbDataAdapter(Befehl); DataTable Tabelle = new DataTable();
Befehl.CommandText = "SELECT * FROM " + treeView_Tabellen.SelectedNode.Text; Befehl.Connection = Datenbankverbindung; Tabelle.Locale = System.Globalization.CultureInfo.InvariantCulture; DatenAdapter.Fill(Tabelle);
dataGridView_TabellenInhalt.DataSource = Tabelle;
Datenbankverbindung.Close(); return true; } catch (Exception E) { MessageBox.Show("Beim Füllen des DataGrid ist ein Fehler aufgetreten: " + E.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } } |
Ich fülle so ein DataGrid aus einer DataTable.
Bei großen Tabellen dauert es sehr lange, bis die Daten im Datagrid verfügbar sind. Wie kann ich die verbleibenede Zeit mithilfe eines Progressbars darstellen?
JüTho - Do 25.09.08 08:52
Der beste Rat lautet: vergiss es.
Zunächst müsstest Du die Anzahl der Datensätze abfragen mit SELECT COUNT(*), was eine doppelte Abfrage bedeuten würde. Dann müsste das Lesen in einen eigenen Thread bzw. BackgroundWorker ausgelagert werden, und dort müsste das Ereignis DataTable.RowChanged o.ä. mit PerformStep o.ä. verbunden werden.
Allenfalls könntest Du ProgressBarStyle.Marquee berücksichtigen. Aber das Auslagern in einen BackgroundWorker ist auf jeden Fall sinnvoll.
Gruß Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!