Autor Beitrag
Kauki
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 17.04.08 15:02 
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

ausblenden 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 user profile iconKlabautermann: CS-Tags eingefügt.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: 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#
OpenBook Visual C#
Einzelheiten über alle Klassen sowie deren Eigenschaften, Methoden und Ereignisse mit sehr vielen Beispielen findet man dann in der SDK-Doku.

Jürgen
Kauki Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
private void befuellen()
        {
            DataGridView dataGridview = new DataGridView(); //objekterzeugung Dataviewgrid
            DataTable dataTable = new DataTable(); //Objekterzeugung DataTable
            DataRow dataRow = dataTable.NewRow(); // Objekterzeugung DataRow
            
            dataRow[0] = "hudri";  //Befülle erste Spalte mit hudri
          
            dataTable.Rows.Add(dataRow); //Schreib die Spalten in dataTable

            dataGridview.DataSource = dataTable; //Gebe als Datenquelle das dataTable ein

        }


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 user profile iconKlabautermann: List-Tag entfernt, CS-Tag korrigiert.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Fr 18.04.08 09:41 
user profile iconKauki 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.

user profile iconKauki 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.

user profile iconKauki 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.

user profile iconKauki hat folgendes geschrieben:
tja jetzt kommt der Fehler das es den Spaltenname nicht in Tabelle vorhanden ist.

Eben: Es fehlt die Definition der Spalten.

user profile iconKauki hat folgendes geschrieben:
hier nochmal der überarbeitet code

Und nochmal: Code soll als C# markiert werden, aber doch nicht als Liste!

user profile iconKauki 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 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: 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