Scribling Doodle Ответов: 1

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


Привет,

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

У меня есть парень по имени Карл, у которого есть подписка. Я могу загрузить все данные в текстовые поля, но теперь мне нужно знать, как создать одноразовую таблицу данных и использовать ее для хранения значений текстовых полей в соответствии с данным клиентом. После этого я хочу динамически создать таблицу, в которой некоторые столбцы связаны с этой таблицей данных, и вставить ее в тело письма.

Вот пример кода для создания таблицы с помощью datagridview:

Что я уже пробовал:

foreach (DataGridViewColumn col in dgw.Columns)
                {
                    mailBody += "<td>" + col.HeaderText + "</td>";
                }
                mailBody += "</tr>";
                foreach (DataGridViewRow row in dgw.Rows)
                {
                    mailBody += "<tr>";
                    foreach (DataGridViewCell cell in row.Cells)
                    {
                        mailBody += "<td>" + cell.Value + "</td>";
                    }
                    {
                        mailBody += "</tr>";
                    }
                }

ZurdoDev

Что не так с кодом, который у вас есть?

Scribling Doodle

Этот код я использовал для Datagrid, моя проблема в том, что я не могу найти способ заставить его работать для Datatables вместо этого.

ZurdoDev

Вместо того чтобы перебирать сетку, перебирайте строки в таблице данных. Логика та же.

Scribling Doodle

Я нашел лучшее решение, чтобы сохранить целостность таблицы в электронном письме не так уж необычно. Этот метод создает более плоскую сетку и работает также для таблиц данных

ZurdoDev

ОК. Пожалуйста, опубликуйте что-нибудь в качестве решения, чтобы это больше не появлялось в списке вопросов без ответов.

1 Ответов

Рейтинг:
7

Scribling Doodle

Я нашел лучший и более чистый способ отображения значений из одноразового datatable под названием dt. Этот код должен работать так, как задумано, создать таблицу в теле письма, используя одноразовую таблицу, созданную для хранения значений.

DataTable dt = new DataTable();
                dt.Columns.Add(new DataColumn("ID"));
                

                DataRow dr = dt.NewRow();
                dr[0] = "ID -" + txtSomething.Text;
                

                dt.Rows.Add(dr);
                MailMessage mm = new MailMessage("your_email@something.com", "your_email@something.com");
                StringBuilder sb = new StringBuilder();
                sb.Append("<p><table width='100%' style='border:Solid 1px Black;'>"); for (int colIndx = 0; colIndx < dt.Columns.Count; colIndx++)
                {

                    sb.Append("<th>");
                    sb.Append(dt.Columns[colIndx].ColumnName);

                    sb.Append("</th>");
                }

                sb.Append("</thead>");

                for (int rowIndx = 0; rowIndx < dt.Rows.Count; rowIndx++)
                {

                    sb.Append("<tr>"); for (int colIndx = 0; colIndx < dt.Columns.Count; colIndx++)
                    {

                        sb.Append("<td>");
                        sb.Append

                        (dt.Rows[rowIndx][colIndx].ToString());

                        sb.Append("</td>");
                    }

                    sb.Append("</tr>");
                }

                sb.Append("</table>");
                mm.Body = sb.ToString();

                mm.IsBodyHtml = true;