SQL-запрос к HTML-таблице для электронной почты - PullRequest
1 голос
/ 23 января 2012

Я использовал некоторый код, очень похожий на следующий, чтобы заполнить элемент управления gridview:

using(SqlDataAdapter sqlDataAdapter = 
    new SqlDataAdapter("SELECT * FROM Table1",
        "Server=.\\SQLEXPRESS; Integrated Security=SSPI; Database=SampleDb"))
{
    using (DataTable dataTable = new DataTable())
    {
        sqlDataAdapter.Fill(dataTable);
        this.dataGridView1.DataSource = dataTable;
    }
}

Теперь я хочу использовать это представление сетки и отправил результаты по электронной почте в формате html.Таблица.Я полагаю, что мог бы справиться с этим, используя gridview в качестве посредника (добавить результаты в gridview, а затем нарисовать HTML-ячейку таблицы за ячейкой), но мне было интересно, есть ли способ взять результаты SQL-запроса и нарисовать его в HTMLтаблица готова к отправке по электронной почте?

Описание: Как я могу запросить базу данных и получить результаты так, чтобы я мог нарисовать таблицу HTML с ними?

Ответы [ 2 ]

3 голосов
/ 23 января 2012

Никто не отвечает, поэтому я попробую.

Похоже, DataTable имеет свойство Rows , которое представляет собой совокупность всех строк в таблице данных. Все, что вам нужно сделать, это перебрать строки и напечатать тег html <tr>. Затем для каждого столбца можно использовать внутренний цикл с помощью тега <td>. У меня очень мало опыта работы с C #, но он должен выглядеть примерно так:

        emit("<table>\n");
        foreach(DataRow row in dataTable.Rows)
        {
            emit("<tr>");
            foreach(DataColumn column in dataTable.Columns)
            {
                emit("<td>" + row[column] + "</td>");
            }
            emit("</tr>\n"); // add a newline for readability
        }
        emit("</table>\n");

Функция emit () может просто объединить строку, если хотите, и затем вы можете отправить электронное письмо в виде html с этой строкой в ​​качестве тела.

1 голос
/ 23 января 2012

Вы можете визуализировать HTML-код из сетки непосредственно в коде с помощью метода RenderControl и использовать вывод StringBuilder. Пример:

StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(sw);
GridView1.RenderControl(hw);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...