Laden...

Frage wegen Tabellen Überschriften

Erstellt von axelfxxx vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.303 Views
axelfxxx Themenstarter:in
139 Beiträge seit 2006
vor 17 Jahren
Frage wegen Tabellen Überschriften

Hallo Leute 😉

wieder mal zum Thema Tabellen:

Mit dieser Funktion, lasse ich CSV Dateien, welche mit Semikolon gesplittet sind, in ein DataGridView einlesen. Natürlich kann diese Funktion noch mehr Trennzeichen, aber das ist nur ein Auschnitt...

Jetzt meine Frage: Bevor ich die IF Abfrage eingebaut hatte, um welches Trennzeichen es sich handelt, habe ich auch brav, die Überschriften bekommen, danach wurde der Rest eingelesen. Doch jetzt nicht mehr. Hab ich irgendwo einen Fehler in der Funktion??


string filename = ofd.FileName;
                    StreamReader sr = new StreamReader(filename, true);
                    if (sr.ReadLine().IndexOf(';') > 0)
                    {
                        foreach (string title in sr.ReadLine().Split(';'))
                        {
                            //Überschriften
                            this.dataGridView1.Columns.Add(title, title);
                        }
                        string[] erste = System.IO.File.ReadAllLines(filename, Encoding.Default);
                        foreach (string ers in erste)
                        {
                            this.dataGridView1.Rows.Add(ers.Split(';'));
                        }
                       
                    }
                    else if .....                        

Vielen Dank im Vorraus 😉

---- >
Keine Signatur 😉

5.942 Beiträge seit 2005
vor 17 Jahren

Hallo Axel

Falls dein Trennzeichen ganz am Anfang steht, schlägt deine Funktion fehl,
da .IndexOf() 0 zurückliefert.

Probiers mal mit > -1.

Siehe Doku: http://msdn2.microsoft.com/de-de/library/k8b1470s(VS.80).aspx

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

axelfxxx Themenstarter:in
139 Beiträge seit 2006
vor 17 Jahren

Danke für den Hinweis😉

Doch jetzt kommt trotzdem keine Überschrift mehr.

Ich brauche aber diese IF Abfrage, da ich ja nicht weiß, wie die Daten in der CSV Datei des Benutzers getrennt sind !?( Ob mit ; oder, oder |)

mfg
Alex

---- >
Keine Signatur 😉

5.942 Beiträge seit 2005
vor 17 Jahren

Springt er beim debuggen überhaupt in diesen Kontext?

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

axelfxxx Themenstarter:in
139 Beiträge seit 2006
vor 17 Jahren

Sorry, bin auf Arbeit und nebenher am Coden 😉

der Code nimmt irgendeine Zeile aus der CSV Datei und bringt diese dann als Überschrift.

ich glaube es hängt an der IF schleife. Sobald ich nämlich die If schleife weglasse, stellt er die Überschrift (weil ja erste Zeile) richtig dar und kann hinterher sogar geordnet die Daten ausgeben.

Gruss Alex

PS: Ich habs mit den verschiedensten Varianten der IF schleife versucht, aber nix geht (≤ -1, oder ≥ -1, oder != 0, oder != 1) Es muss doch herauszubekommen sein, mit welchem Zeichen die Daten voneinander getrennt sind bevor der User die Daten zu gesicht bekommt.

---- >
Keine Signatur 😉

F
10.010 Beiträge seit 2004
vor 17 Jahren

Natürlich hängt es daran.

Du zeile mit dem ReadLine liest eine Neue Zeile ein.
Wenn Du dann beim Titel ankommst, ist das dann aber schon die 2. Zeile.

axelfxxx Themenstarter:in
139 Beiträge seit 2006
vor 17 Jahren

Aber wie komme ich denn dann auf die erste Zeile !?

---- >
Keine Signatur 😉

F
10.010 Beiträge seit 2004
vor 17 Jahren

Schau Dir deinen Source nochmal ganz genau an, und versuche mal
nachzulesen, was sr.ReadLine() macht.

axelfxxx Themenstarter:in
139 Beiträge seit 2006
vor 17 Jahren

ich habs raus:

Bevor du die Schleife aufrufst einfach ein :

string firstline = sr.ReadLine();

Dann kann man mit den IfSchleifen weitermachen



if (firstline.IndexOf(',') > -1)
                    {
                        string[] title = firstline.Split(',');
                        foreach (string tit in title)
                        {
                            this.dataGridView1.Columns.Add(tit, tit);
                        }
                        string[] inhalt = File.ReadAllLines(filename, Encoding.Default);
                        foreach (string inh in inhalt)
                        {
                            this.dataGridView1.Rows.Add(inh.Split(','));
                        }
                    }

MFG

@FZELLE: Dein Tip war bestens !!

---- >
Keine Signatur 😉