C# HTML таблица не в правильном формате вывода - PullRequest
0 голосов
/ 15 апреля 2020

Я формирую таблицу HTML в строковом формате для анализа в другую функцию для отображения в электронном письме.

Однако я чувствую, что упускаю из виду многие вещи, так как не могу получить таблицу для правильного вывода.

Ниже приведен мой фрагмент кода:

var table = new HtmlTable();
var mailMessage = new StringBuilder();
string html;

HtmlTableRow row;
HtmlTableCell cell;

row = new HtmlTableRow();

row.Cells.Add(new HtmlTableCell { InnerText = "First Name" });
row.Cells.Add(new HtmlTableCell { InnerText = "Last Name" });
row.Cells.Add(new HtmlTableCell { InnerText = "Age" });

table.Rows.Add(row); //seems to not adding a new row at this statement

row.Cells.Add(new HtmlTableCell { InnerText = "Jane" });
row.Cells.Add(new HtmlTableCell { InnerText = "Doe" });
row.Cells.Add(new HtmlTableCell { InnerText = "29" });

using (var sw = new StringWriter()){
    table.RenderControl(new HtmlTextWriter(sw));
    html = sw.ToString();
}

mailMessage.AppendFormat(html);
Console.WriteLine(mailMessage.ToString());

Выход:

<table>
        <tr>
                <td>First Name</td>
                <td>Last Name</td>
                <td>Age</td>
                <td>Jane</td>
                <td>Doe</td>
                <td>29</td>
        </tr>
</table>

1 Ответ

1 голос
/ 15 апреля 2020

Попробуйте это после кода:

table.Rows.Add(row);

row = new HtmlTableRow();

и после установки данных td, добавьте вторую строку в таблицу снова, используя

table.Rows.Add(row);

, вам необходимо повторно инициализировать переменную строки после добавления.

Таким образом, ваш код теперь будет выглядеть следующим образом:

row = new HtmlTableRow();

row.Cells.Add(new HtmlTableCell { InnerText = "First Name" });
row.Cells.Add(new HtmlTableCell { InnerText = "Last Name" });
row.Cells.Add(new HtmlTableCell { InnerText = "Age" });

table.Rows.Add(row); //Add First Row.
row = new HtmlTableRow(); // Reinitialize Row

row.Cells.Add(new HtmlTableCell { InnerText = "Jane" });
row.Cells.Add(new HtmlTableCell { InnerText = "Doe" });
row.Cells.Add(new HtmlTableCell { InnerText = "29" });

table.Rows.Add(row); // Add Second Row

Или лучше использовать другую переменную для устранения неоднозначности. Как headerRow, firstRow или около того.

...