Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Aus Datatable Daten in Datagridview anzeigen
Kauki - Do 17.04.08 15:02
Titel: Aus Datatable Daten in Datagridview anzeigen
Hallo hab ein Problem...
Ich kann nicht die Daten die in dem Datatable gespeichert sind mir im Datagridview anzeigen lassen
ich schreib euch einfach mal den Code hin und hoff irgendwer kann mir helfen schon mal danke im Vorhinein
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| private void befuellen() { DataGrid dataGrid1 = new DataGrid(); DataTable dataTable = new DataTable(); DataRow dataRow = dataTable.NewRow(); dataRow[1] = "Hallo";
dataTable.Rows.Add(dataRow); dataGridView1.DataSource = dataTable; dataGrid1.DataSource = dataTable;
} |
greez Kauki
Moderiert von
Klabautermann: CS-Tags eingefügt.
JüTho - Do 17.04.08 15:58
:welcome:
Bitte sorge dafür, dass Code lesbar ist: Textbereich markieren, "Bereiche"-Button öffnen, C# auswählen, Plus-Zeichen drücken.
Etwas mehr Gedanken solltest Du Dir schon machen, bevor Du hier allgemein fragst.
Zunächst musst Du Dich entscheiden, ob Du mit
DataGrid oder mit
DataGridView arbeitest. Das sind zwei völlig verschiedene Dinge, zumal es DataGrid in zwei Varianten (WinForms und WebForms) gibt und außerdem noch GridView und DataView. Dann solltest Du angeben, ob ein Fehler auftritt - beim Kompilieren oder zur Laufzeit, jeweils mit genauer Beschreibung - oder inwiefern sich das erwartete Ergebnis vom tatsächlichen unterscheidet.
Außerdem musst Du beachten, dass Elemente, die innerhalb einer Methode deklariert sind, nur dort gültig sind (in Deinem Fall vor allem dataTable). Wie eine Tabelle ohne Spalten existieren kann, kann ich mir auch nicht vorstellen, erst recht nicht, dass in die zweite nicht vorhandene Spalte einer Zeile etwas eingetragen wird.
Insgesamt kommt es mir so vor, dass Dir noch viele Grundlagen fehlen. Du solltest Dich deshalb Schritt für Schritt mit C# und NET vertraut machen, z.B. durch:
OpenBook C# [
http://www.galileocomputing.de/openbook/csharp/index.htm]
OpenBook Visual C# [
http://www.galileocomputing.de/openbook/visual_csharp/index.htm]
Einzelheiten über alle Klassen sowie deren Eigenschaften, Methoden und Ereignisse mit sehr vielen Beispielen findet man dann in der
SDK-Doku.
Jürgen
Kauki - Do 17.04.08 19:57
ok sorry tut mir leid naja war bisschen in eile
also nochmal... ich hab eine windowsapplication-> diese hat eine datagridview-> ich möchte nun gern wissen wie ich hier einzelne spalten Variablen zuweisen kann bzw wie ich einfache strings dort hinuasgeben kann. Datenquelle habe ich keine angegeben da keine Datenbank im hintergrund läuft. Im späteren soll das programm einmal über einen Button eine XML datei öffnen die mit einer Bibliothek ausgelesen wird... also nachdem ich mir den Code noch einmal durchgesehn habe hab ich natürlich peinlicherweise vergessen die funktion auch im Hauptprogramm aufzurufen.. davor hatte ich keinen Fehler .. tja jetzt kommt der Fehler das es den Spaltenname nicht in Tabelle vorhanden ist.
hier nochmal der überarbeitet code
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| private void befuellen() { DataGridView dataGridview = new DataGridView(); DataTable dataTable = new DataTable(); DataRow dataRow = dataTable.NewRow(); dataRow[0] = "hudri"; dataTable.Rows.Add(dataRow); dataGridview.DataSource = dataTable; } |
aja zu den Spalten wie generier ich die das hab ich noch nicht ganz verstanden??
tut mir leid das ich so ein n00b bin
naja aber danke für deine weißheiten
Jürgen
mit besten dank Kauki
Moderiert von
Klabautermann: List-Tag entfernt, CS-Tag korrigiert.
JüTho - Fr 18.04.08 09:41
Kauki hat folgendes geschrieben: |
ok sorry tut mir leid naja war bisschen in eile |
Aber Du erwartest Hilfe, also erschwere uns bitte nicht die Arbeit. Wenn ich fundiert antworten will, kostet das meine Zeit, die ich Dir schenke.
Kauki hat folgendes geschrieben: |
ich möchte nun gern wissen wie ich hier einzelne spalten Variablen zuweisen kann bzw wie ich einfache strings dort hinuasgeben kann. |
Ganz einfach: Das
DataGridView soll eben nicht "solo" stehen, sondern - wie Du es im Titel angegeben hast - mit einer
DataTable. Wenn diese Tabelle richtig erstellt und zugewiesen wurde, macht das DGV alles alleine.
Kauki hat folgendes geschrieben: |
Datenquelle habe ich keine angegeben da keine Datenbank im hintergrund läuft. Im späteren soll das programm einmal über einen Button eine XML datei öffnen die mit einer Bibliothek ausgelesen wird... |
"Datenbank im Hintergrund" ist unabhängig von "Tabelle im Arbeitsspeicher". Es ist auf jeden Fall sinnvoll, von vornherein mit einer DataTable zu arbeiten, die dem xml-Inhalt entspricht (vorausgesetzt, die xml-Datei ist passend aufgebaut). Erzeuge eine DataTable mit passenden Spalten (ganz wichtig, ohne Spalten ist eine DataTable sinnlos); mit ReadXml/WriteXml kannst Du den Dateiinhalt lesen und schreiben.
Kauki hat folgendes geschrieben: |
tja jetzt kommt der Fehler das es den Spaltenname nicht in Tabelle vorhanden ist. |
Eben: Es fehlt die Definition der Spalten.
Kauki hat folgendes geschrieben: |
hier nochmal der überarbeitet code |
Und nochmal: Code soll
als C# markiert werden, aber doch nicht als Liste!
Kauki hat folgendes geschrieben: |
aja zu den Spalten wie generier ich die das hab ich noch nicht ganz verstanden?? |
Da hilft leider mein Tipp mit den OpenBooks zu wenig, aber die
SDK-Doku: Die Beispiele zum
DataTable-Konstruktor erstellen auch ein paar Spalten und Zeilen.
Aber den
Geltungsbereich von Variablen hast Du immer noch nicht beachtet: Eine Variable, die
innerhalb einer Methode deklariert wird, ist nur dort gültig. Ein neues DGV und eine neue DataTable, die innerhalb von "befuellen" erstellt werden, sind nach dem Ende dieser Methode schon wieder vergessen.
Vorschlag für das Vorgehen:
- Im Designer erzeugst Du das DataGridView, aber ohne Details zu Zeilen und Spalten.
- Im Formular deklarierst Du eine DataTable.
- Im Konstruktor des Formulars nach InitializeComponents erzeugst Du die DataTable mit ihren Spalten.
- Sofort danach kommt die Zuweisung der DataSource.
An diesem Konzept wird nichts mehr geändert. Für die
Daten hast Du die folgenden Möglichkeiten (stark vereinfacht); dafür bieten sich eigene Buttons an:
- Durch ReadXml kannst Du ggf. den Inhalt der xml-Datei in die DataTable einlesen und siehst sofort alle Inhalte.
- Durch NewRow + Rows.Add kannst Du per Code Zeilen hinzufügen (die Du ebenfalls sofort siehst).
- Durch WriteXml kannst Du den gesamten Inhalt speichern.
Damit Du alles besser siehst, schlage ich vor, zunächst eine einfache DataTable zu erzeugen, dann zwei Zeilen per Code hinzuzufügen und das per WriteXml zu speichern. Dann kannst Du die xml-Datei untersuchen und die Zusammenhänge erkennen.
Woher weißt Du, dass ich ein Weißer bin mit "Weißheiten"? Ich könnte auch ein Farbiger sein. Jürgen
Kauki - So 20.04.08 21:22
danke für die antwort ich werd mich da nochmal reinhängen ..
ja das mit dem xml file is das Problem es ist mehrdimensional daher nicht passend mit dem writexml und readxml aber da gibt es eh abhilfe mit der bibliothek
und sehr hilfreich ist der vorschlag fürs vorgehen danke wirklich
JüTho - Mo 21.04.08 10:21
Hallo,
unter einem "mehrdimensionalen Xml" kann ich mir nichts vorstellen. (Meine Xml-Kenntnisse halten sich in engen Grenzen.) Aber vielleicht gelingt es Dir, dies auf DB-Seite (also für den Arbeitsspeicher) in zwei Tabellen zu übertragen und diese mit DataRelation zu verknüpfen.
Ich erinnere mich vage, dass ich ein ähnliches Vorgehen schon einmal "automatisiert" (also durch NET-Standardmethoden) gesehen habe, kann mich aber überhaupt nicht erinnern, welche Klasse oder Methode das geleistet haben könnte. Deshalb kann ich leider keinen genaueren Vorschlag machen.
Gruß Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!