Hejsa Cristian
EDIT: Efter lige at have læst lidt kommentarer fandt jeg ud hvad du søgte og mente, så lige et lille andet stykke kode:
- public static string[] GetTableLines(string rootDir, string FileName)
- {
- StreamReader strmReader = new StreamReader(Path.Combine(rootDir, FileName));
- string TableString= strmReader.ReadToEnd();
-
- string[] splitParamsNewline = new string[1] { "\r\n" };
- string[] TableLines= TableString.Split(splitParamsNewline, System.StringSplitOptions.RemoveEmptyEntries);
- if (strmReader.BaseStream != null)
- strmReader.Close();
- return TableLines;
- }
Her får du de linier med det der skal ind i tabellen - dvs [test#test2#test3#][testlinie2-1#testlinie2-2#] - og disse skal så splittes for hver række du sætter ind i tabellen.
- protected void Page_Load(object sender, EventArgs e)
- {
- tblReadColumns.CellSpacing = 0;
-
- TableCell cell = new TableCell();
- TableRow row = new TableRow();
- string[] TableLines = FileHelper.GetTableLines(Server.MapPath("~/"), "TableLines.txt");
- string[] TableLineContent;
-
- foreach (string line in TableLines)
- {
- row = new TableRow();
- TableLineContent = line.Split('#', System.StringSplitOptions.RemoveEmptyEntries);
- foreach(string content in TableLineContent)
- {
- cell = new TableCell();
- cell.Text = content;
- row.Cells.Add(cell);
- }
- tblReadColumns.Rows.Add(row);
- }
- }
Håber det hjælper lidt
-------------------------------------------------------------------------------------------------------
Jeg er ikke helt sikker på jeg forstår din struktur i din fil du skal læse.
Er det "test#test2#test3#" i første linie der indikerer at dette skal føres ind i de tre første kolonner og hvis linie 2 er "testlinie2-1#testlinie2-2#" så skal der kun fyldes noget i kolonnerne 1 og 2 i anden række?
For nemheds skyld antager jeg at du blot vil læse alle sammen og proppe dem ind i kolonnerne som de kommer.
Hvis jeg var dig så ville jeg gøre følgende:
I ASPX-filen (.aspx) ville jeg i min markup have en asp.net-tabel jeg kunne arbejde i fra min codebehind:
- <asp:Table ID="tblReadColumns" runat="server">
- </asp:Table>
Derefter ville jeg lave metoden der skal læse fra filen:
- public static string[] GetFileStrings(string rootDir, string Filename)
- {
- StreamReader strmReader= new StreamReader(Path.Combine(rootDir, Filename));
- string FileString = strmReader.ReadToEnd();
-
- string[] FileStrings= FileString.Split('#', System.StringSplitOptions.RemoveEmptyEntries);
- if (strmReader.BaseStream != null)
- strmReader.Close();
- return FileStrings;
- }
Denne skulle gerne give en liste med [test][test2][test3]
I din page_load ville jeg så putte indholdet ind i tabellen:
- protected void Page_Load(object sender, EventArgs e)
- {
- tblReadColumns.CellSpacing = 0;
-
- TableCell cell = new TableCell();
- TableRow row = new TableRow();
-
- string[] FileContent = FileHelper.GetFileStrings(Server.MapPath("~/"), "FileToRead.txt");
-
- foreach (String line in FileContent)
- {
- cell = new TableCell();
- cell.Text = line;
- row.Cells.Add(cell);
- }
- tblReadColumns.Rows.Add(row);
Nu får du alle data i den fil ud på samme række (første række) i din tabel, men hvis du gerne vil have det splittet for fx 3 rækker så gør du følgende:
- tblReadColumns.CellSpacing = 0;
-
- TableCell cell = new TableCell();
- TableRow row = new TableRow();
-
- string[] FileContent = FileHelper.GetFileStrings(Server.MapPath("~/"), "FileToRead.txt");
-
- int maxColumsn = 3;
- for (int i = 0; i < FileContent.Length; i++)
- {
- cell = new TableCell();
- cell.Text = FileContent[i];
- row.Cells.Add(cell);
- if (i == maxColumns)
- {
- tblReadColumns.Rows.Add(row);
- row = new TableRow();
- }
- }
Koden burde virke, men er taget nogenlunde fra memory så hvis der er nogle småfejl så meld tilbage så kan jeg eller en af de andre dygtige folk herinde nok hjælpe dig videre hvis det ikke er så åbentlyst at du selv kan løse det
Happy coding
Indlæg senest redigeret d. 26.07.2011 07:44 af Bruger #16651