Я хотел бы создать письмо, в которое включен gridview. Я искал в Интернете и пробовал несколько решений. Но почему-то я неправильно понимаю или делаю что-то не так. С моим текущим кодом я получаю ошибку:
System.InvalidOperationException: Data source is an invalid type. It must be either
an IListSource, IEnumerable, or IDataSource.
Я читал об использовании StringBuilder
, StringWriter
, HtmlTextWriter
, RenderControl
и т. Д., Но все еще не могу понять, как заставить это работать.
Вот мой код:
public void Email()
{
string conn = "Data Source=pc-..";
System.Data.SqlClient.SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection(conn);
sqlConn.Open();
SqlCommand sendGrid = new SqlCommand("SELECT * FROM tblSomething", sqlConn);
GridView grd = new GridView();
if (sendGrid != null)
{
grd.DataSource = sendGrid.ExecuteReader();
grd.DataBind();
}
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter htw = new HtmlTextWriter(sw);
grd.RenderControl(htw);
MailMessage mail = new MailMessage();
mail.To.Add("ToWhoEmail");
mail.From = new MailAddress("FromWho");
mail.Subject = "SubjectSomething";
mail.IsBodyHtml = true;
mail.BodyFormat = System.Net.Mail.MailMessage.IsBodyHtml.Html;
// At this line above i get an error. He doesn't recognize BodyFormat = ...;
// System.Web.Mail.MailFormat is obsolete.
// The recommended alternative is: System.Net.Mail.MailMessage.IsBodyHtml
mail.Body = sb.ToString();
SmtpClient smtp = new SmtpClient("...");
smtp.Send(mail);}
Я также попытался сделать gridview в другом файле cs и вызвать его с помощью:
SendGrid.MakeGrid () в mail.Body = "...";
Но все, что я тогда получаю, это: System.Web.UI.WebControls.GridView в моей электронной почте.
Вся помощь приветствуется, спасибо заранее.
С уважением, Мати