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
DataTable, DataRow und DataGrid sollten Dir weiterhelfen. Schau Dir mal die Klassen in der Doku an, da findest Du auch ein Beispiel.
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
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;
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(
Schau Dir mal die LoadRow Methode der DataTable Klasse an.
--> Ich verschieb das mal nach ADO.NET.
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
Ist das nicht möglich???
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;
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
Du musst die Werte natürlich in einer Schleife setzen.
Zeig mal bissl Code, falls es nicht funktioniert.
Opps da habe ich dicken Klops gemacht
Habe int i=0 mit in die while Schleife geschrieben
Jetzt geht es aber
Wenn ich horizontal Scrolle ist es da möglich die erste Spalte immer anzeigen zu lassen also das die nicht mitscrollt ??
Wie kann ich jetzt die ganze Tabelle wieder auslesen??
Ohne dabei die letzten 5 Spalten mit auszulesen !
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 😉
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 ).
In der 2.Spalten stehen immer die Namen und die sollen immer sichtbar sein
Und das auslesen??
Kann mir keiner helfen??
Leute bitte jetzt helft mir doch X(
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???
Ich habe schon rausgefuden wie das geht 🙂
Aber es gibt noch 2 Probleme.
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(
Kann mir mal einer helfen??
Ich habt das doch sicher schon mal gemacht
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