Laden...

Dynamische Arrays in Form einer Tabelle augeben?

Erstellt von michback20 vor 19 Jahren Letzter Beitrag vor 19 Jahren 5.342 Views
M
michback20 Themenstarter:in
13 Beiträge seit 2004
vor 19 Jahren
Dynamische Arrays in Form einer Tabelle augeben?

Hallo, ich bin noch nicht ganz so fit in Sachen C#.
Ich möchte gerne eine dynamische array erstellen mit beliebig vielen Spalten und Zeilen. Intern ist das auch kein Problem. Aber jetzt möchte ich das noch in Form einer Tabelle ausgeben. Per Knopfdruck soll sich dann die array öffnen. NICHT in einer Konsolenanwendung, sondern in einer Windowsanwendung. Wie kann ich so was machen, gibt es da einfach Befehle? Wenn die Tabelle sichtbar ist, wäre es auch gut, wenn der Benutzer Daten darin ändern kann. Das letztere wäre gut, muß aber nicht sein. Kann mir jemand helfen???

Gruß Micha

N
4.644 Beiträge seit 2004
vor 19 Jahren

DataTable, DataRow und DataGrid sollten Dir weiterhelfen. Schau Dir mal die Klassen in der Doku an, da findest Du auch ein Beispiel.

M
michback20 Themenstarter:in
13 Beiträge seit 2004
vor 19 Jahren

Ich habe da mal unter den Begriffen nachgeschaut, aber da gibt es das Problem, dass so wie ich das verstanden habe, das mit der Übernahme der Daten nur aus Sql, Xml Datein geht, um es dann in einer Datatable darzustellen. Ich brauche es unbedingt aus Arrays. Vielleicht hat schon jemand soetwas gemacht? Und hat dafür einen Beispielcode?

Gruß Micha

N
4.644 Beiträge seit 2004
vor 19 Jahren

Ein Beispiel für DataTable:

DataTable dt = new DataTable("TableName");
dt.Columns.Add("Spalte 1");
dt.Columns.Add("Spalte 2");
DataRow dr = dt.NewRow();
dr["Spalte 1"] = "Zelle 0/0";
dr["Spalte 2"] = "Zelle 0/1";
dt.Rows.Add(dr);

dr = dt.NewRow();
dr["Spalte 1"] = "Zelle 1/0";
dr["Spalte 2"] = "Zelle 1/1";
dt.Rows.Add(dr);
dataGrid1.DataSource = dt;
A
196 Beiträge seit 2005
vor 19 Jahren

Wie mache ich das ganze mit Hilfe eines Arrays???

String[]name={"a","b","c","d"};
dt.Columns.Add(name);

Das geht leider nicht so X(

N
4.644 Beiträge seit 2004
vor 19 Jahren

Schau Dir mal die LoadRow Methode der DataTable Klasse an.

--> Ich verschieb das mal nach ADO.NET.

A
196 Beiträge seit 2005
vor 19 Jahren

Gut das klappt erstmal 😁
Nun habe insgesamt 10 Zeilen und 5 Spalten.
Das ganz wird aus einer Textdatei gelesen (Arbeiten mit Dateien )
Nun will ich aber in jeder Zeile in der 6Spalte noch den durchschnitt ausgeben
Wie mache ich das??

EDIT:Noch was wichtiges:
Wenn ich horizontal Scrolle ist es da möglich die erste Spalte immer anzeigen zu lassen also das die nicht mitscrollt

A
196 Beiträge seit 2005
vor 19 Jahren

Ist das nicht möglich???

N
4.644 Beiträge seit 2004
vor 19 Jahren

Doch, Du fügst noch eine Spalte an und immer wenn Du eine Row füllst, rechnest Du den Durchschnitt aus und schreibst ihn in die Spalte.

dt.Rows[rowIndex]["Durchschnittspalte"] = deinWert;
A
196 Beiträge seit 2005
vor 19 Jahren

Das Problem ist nur der Wert (von der letzen Zeile) immer in die erste Zeile gesetzt wird
Der Wert steht auch nur in der ersten Zeile
Ich will das aber in jeder Zeile haben

N
4.644 Beiträge seit 2004
vor 19 Jahren

Du musst die Werte natürlich in einer Schleife setzen.
Zeig mal bissl Code, falls es nicht funktioniert.

A
196 Beiträge seit 2005
vor 19 Jahren

Opps da habe ich dicken Klops gemacht
Habe int i=0 mit in die while Schleife geschrieben

Jetzt geht es aber

A
196 Beiträge seit 2005
vor 19 Jahren

Wenn ich horizontal Scrolle ist es da möglich die erste Spalte immer anzeigen zu lassen also das die nicht mitscrollt ??

A
196 Beiträge seit 2005
vor 19 Jahren

Wie kann ich jetzt die ganze Tabelle wieder auslesen??
Ohne dabei die letzten 5 Spalten mit auszulesen !

A
196 Beiträge seit 2005
vor 19 Jahren

Man müsste ja die Zellen und Zeilen zählen und die dann durch eine Schleife jagen aber wie soll sowas gehen??
Es muss ja immer ein | hinzugefügt werden 😉

N
4.644 Beiträge seit 2004
vor 19 Jahren

Du kannst auch Spalten ausblenden.

dataSet.Tables[0].Columns[0].ColumnMapping = MappingType.Hidden;

Warum soll die 1. Spalte stehen bleiben?
Ich würde diese Spalteninformationen vielleicht in den Rowheader des DataGrids schreiben ( kommt aber drauf an was es für Daten sind ).

A
196 Beiträge seit 2005
vor 19 Jahren

In der 2.Spalten stehen immer die Namen und die sollen immer sichtbar sein
Und das auslesen??

A
196 Beiträge seit 2005
vor 19 Jahren

Kann mir keiner helfen??

A
196 Beiträge seit 2005
vor 19 Jahren

Leute bitte jetzt helft mir doch X(

A
196 Beiträge seit 2005
vor 19 Jahren

Eine Idee habe ich ja schon

 while (y < Anzahl Zeilen){ 
               while (x < Anzahl Splaten){ 
                 wort+= gibt wert an position(y, x); 
                  wort += "|"; 
                  x++; 
               } 
              
                              
               wort = ""; 
               y++; 
               x = 0; 
               
         } 

Aber wie kann man die Zeilen und Spalten auslesen???

A
196 Beiträge seit 2005
vor 19 Jahren

Ich habe schon rausgefuden wie das geht 🙂
Aber es gibt noch 2 Probleme.

  1. Ich will immer noch eine immer sichtbare Spalte haben
    2)Wenn der User auf sortieren klickt und anschließend in einer Spalte was ändert soll nicht wieder sortiert werden
A
196 Beiträge seit 2005
vor 19 Jahren

zu 1)
Ich habe es jetzt mal mit DataGridTableStyle und DataGridTextBoxColumn versucht aber jetzt wird nur noch die Spalte angezeigt dich ich bei DataGridTextBoxColumn angegeben habe.
Ich weiss auch nicht ob das der richtige Weg ist

zu 2) hoffe mal auf eure Hilfe X(

A
196 Beiträge seit 2005
vor 19 Jahren

Kann mir mal einer helfen??
Ich habt das doch sicher schon mal gemacht

B
483 Beiträge seit 2005
vor 19 Jahren

Hallo alf468,
wenn du noch Hilfe brauchst, definir bitte deine Frage als neues Thema, über alle Beiträge zu blättern, habe ich kein Nerv,
Gruss,
Boris