I want to send a GridView
by email from my Exchange (outlook) account using an asp:button
.
My code works fine, but the GridView
loose it format (colors, column weight, etc) in the email.
This is the code:
using System.Net;
using Outlook = Microsoft.Office.Interop.Outlook;
protected void Send_Click(object sender, EventArgs e)
{
try
{
// Create a Outlook Application and connect to outlook
Outlook.Application OutlookApplication = new Outlook.Application();
// create the MailItem which we want to send
Outlook.MailItem message = (Outlook.MailItem)OutlookApplication.CreateItem(Outlook.OlItemType.olMailItem);
MailAddress toAddress = new MailAddress("myemail@gmail.com");
MailAddress ccAddress = new MailAddress("myemail@mycompany.com");
message.To = toAddress.ToString();
message.CC = ccAddress.ToString();
message.Subject = "Mail Subject";
message.HTMLBody = GridViewToHtml(HourlyReportGV1);
message.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;
//Send email
message.Send();
}
catch (System.Exception ex)
{
Aviso.Text = ex.ToString();
}
}
private string GridViewToHtml(GridView gv)
{
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(sw);
gv.RenderControl(hw);
return sb.ToString();
}
public override void VerifyRenderingInServerForm(Control control)
{
/* Verifies that the control is rendered */
}
This is how it looks:
Do you know how to made the "Email View" exactly the same as the "Web View"?
<asp:GridView style="margin:0 auto; margin-bottom:50px;" HeaderStyle-CssClass="tituloshandoff" RowStyle-CssClass="contenidohandoffbatch" ID="HourlyReportGV1" runat="server" AutoGenerateColumns="False" DataSourceID="Vacio">
<Columns>
<asp:BoundField DataField="IDBatch" HeaderText="ID" SortExpression="IDBatch" HeaderStyle-CssClass="TituloInvisible" ItemStyle-CssClass="TituloInvisible"/>
<asp:BoundField DataField="DealerCodigo" HeaderText="CODE" SortExpression="DealerCodigo"/>
<asp:BoundField DataField="DealerDescripcion" HeaderText="NAME" SortExpression="DealerDescripcion"/>
<asp:TemplateField HeaderText="00:00"><ItemTemplate><asp:TextBox runat="server" ID="Cero" Width="70px"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="01:00"><ItemTemplate><asp:TextBox runat="server" ID="Una" Width="70px"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="02:00"><ItemTemplate><asp:TextBox runat="server" ID="Dos" Width="70px"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="03:00"><ItemTemplate><asp:TextBox runat="server" ID="Tres" Width="70px"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="04:00"><ItemTemplate><asp:TextBox runat="server" ID="Cuatro" Width="70px"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="05:00"><ItemTemplate><asp:TextBox runat="server" ID="Cinco" Width="70px"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="06:00"><ItemTemplate><asp:TextBox runat="server" ID="Seis" Width="70px"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="07:00"><ItemTemplate><asp:TextBox runat="server" ID="Siete" Width="70px"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="08:00"><ItemTemplate><asp:TextBox runat="server" ID="Ocho" Width="70px"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="09:00"><ItemTemplate><asp:TextBox runat="server" ID="Nueve" Width="70px"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="10:00"><ItemTemplate><asp:TextBox runat="server" ID="Diez" Width="70px"></asp:TextBox></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="11:00"><ItemTemplate><asp:TextBox runat="server" ID="Once" Width="70px"></asp:TextBox></ItemTemplate></asp:TemplateField>
</Columns>
</asp:GridView>