从标准ASP.NET表中删除空单元格

时间:2018-03-06 17:54:51

标签: c# asp.net null cell

我正在尝试使用.txt文件作为来源制作时间表,但我遇到了一些麻烦。我正在使用C#和ASP.NET创建一个网站。

enter image description here

这就是我得到的:

enter image description here

我努力将所有数据放在相同的5行中,但它似乎不可能,它们总是跳到不同的行。为了说清楚,这是我的期望:

enter image description here

以防万一,这是我写的代码,也许我搞砸了某个地方:

<tr><td>Name</td><td>Redacted</td><td>AR</td><td>email</td><td>+41 61 681 85 25</td><td><img src= "filepath to image folder" alt = "Cannot Find Image" height="100"></td></tr>

}
非常感谢任何帮助!

P.S。这里是.txt文件的样子(忽略非英文名称,这些是立陶宛语的学校科目):

enter image description here

2 个答案:

答案 0 :(得分:0)

所以这里有一些事情要做。我只是将它自由化了,所以我确定那里有语法和其他错误,但是尝试一下,更改自己的代码等等。

{{1}}

答案 1 :(得分:0)

您可以使用Linq将文本文件拆分为已用逗号分割的行。然后,它只是循环所有项目的问题。它全部动态工作,因此您可以根据需要在工作日添加尽可能多的工作日和行。

//create a list with the rows already split by comma
List<string[]> allRows = File.ReadLines(Server.MapPath("/textfile1.txt")).Select(line => line.Split(',')).ToList();

//group by weekday
var sortedList = allRows.GroupBy(x => x[1]).ToList();

//get the max number of rows needed
var rowCount = sortedList.Max(x => x.Count()) + 1;

//create a new table
Table table = new Table();

//fill the table with rows and columns
for (int i = 0; i < rowCount; i++)
{
    TableRow row = new TableRow();

    for (int j = 0; j < (sortedList.Count * 2); j++)
    {
        //if it is the first row add the row headers
        if (i == 0)
        {
            row.BackColor = Color.LightGray;

            if (j % 2 == 1)
                row.Cells.Add(new TableCell() { Text = sortedList[j /2].Key });
            else
                row.Cells.Add(new TableCell() { Text = "Nr" });
         }
         else
         {
            row.Cells.Add(new TableCell());
        }
    }

    table.Rows.Add(row);
}

//loop all the weekdays
for (int i = 0; i < sortedList.Count; i++)
{
    int j = 1;

    //loop all the items within a weekday
    foreach (var item in sortedList[i])
    {
        //the item[x] is based on the sample txt file, it is the row split by comma index
        table.Rows[j].Cells[i * 2].Text = item[2];
        table.Rows[j].Cells[(i * 2) + 1].Text = item[3];
        j++;
    }
}