Hallo allerseits,
ich habe ein kleines Problem bei C# und hoffe das mir hier jemand helfen
kann.
Es geht um die DatagridView option bei C# im Windows Form Modus. Ich
habe ein String. Dieser heißt Data2 und hat folgendes Format/Aussehen:
122345 Hersteller Verwendung
Diese drei Begriffe (Zahl eine Herstellername und eine Verwendung) sind
jeweils mit einem "Tab" getrennt (\t). Das Gaznze ist also eine
eingeleseen Tab separierte Textdatei mit mehreren hunder Reihen.
Nun würde ich gerne diese Textdatei in einer Tabelle mit Hilfe der
Datagridview anzeigen lassen. Nur leider weiß ich nicht wie ich den
String in die Datagridview bekomme. Kann mir dabei jemand behilflich
sein?
Hier ein QUellcodeauszug der auch Funktioniert:
private void Convert_Click(object sender, EventArgs e)
{
string Data = richTextBox1.Text;
string Data2 = Data.Replace(';', '\t');
}
Über Hilfe würde ich mich freuen.
Grüße
Basti
Zuerst mal würde ich den String aufsplitten (string.split(...)), so dass
du die einzelnen Daten bekommst. Diese würde ich dann in die geeigneten
Datentypen konvertieren (z.B. die Zahl mit Int32.Parse(..) parsen).
Die kannst du dann einfach deiner View hinzufügen (entsprechend
konfigurierte Columns vorrausgesetzt:
table.Rows.Add(datum1, datum2, datum3, ...);
(oder so ähnlich)
1. Schreibe eine Klasse mit Id, Hersteller und Verwendung.
2. Teile jeden String in seine 3 Bestandteile auf (String.Split wie von
Boris schon erwähnt); könnte/sollte man im Konstruktor der Klasse
machen.
3. Erzeuge eine Liste aus Instanzen der genannten Klasse.
4. Binde die/das DataGridView an die Liste (DataSource).
Ob du Databinding verwenden willst, bleibt dir überlassen, aber ohne 1-3
ist es Murks.
Vielen Dank schonmal für die Hilfe
Den String Data2 teile ich also auf. Das habe ich wie folgt gemacht.
DataTable dt = new DataTable();
string[] tableData = Data2.Split("\t".ToCharArray(),
StringSplitOptions.RemoveEmptyEntries);
Das \t ist dazu da, dass das System erkennt das die Trennung mit Tab
gemacht wird.
Das Binden mache ich dann mit:
dataGridView1.DataSource = tableData;
Aber wie erkennt das System wieviel Reihen es geben wird, also Column,
bzw. wie Teilt er die Werte auf die Reiehen auf? Das ist der Part den
ich noch nicht so recht begriffen habe.
Sinuswechselanwalt schrieb:> Sinuswechselanwalt> Aber wie erkennt das System wieviel Reihen es geben wird, also Column,> bzw. wie Teilt er die Werte auf die Reiehen auf? Das ist der Part den> ich noch nicht so recht begriffen habe.
Per Reflection. Ich würde eine Klasse erstellen; wenn du ein paar
Minuten wartest, schreibe ich ein kleines Beispiel. Ist aber simpel.
Bevor du dich vergeblich abmühst: Ich habe dummerweise nicht gefragt,
welche Version von C# und .NET du verwendest. Lambdas und Linq (z.B.
Select(line => ...) gibt es seit C# 3.0. Wenn du eine ältere Version
benutzt, kannst du stattdessen einfach explizit Schleifen schreiben,
z.B.
_daten = new List<DataEntry>();
// ...
foreach(var line in lines)
{
_daten.Add(new DataEntry(line));
}
Eine eigene Frage?
Dieser Thread ist über 12 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.