c# - 如何使用格式在电子邮件中发送 gridview

标签 c# asp.net email gridview

我正在开发一个在线订购 Web 应用程序,我必须在其中通过电子邮件将 perches 产品详细信息发送给客户。我已将所有数据维护在数据表中,然后按如下方式实用地生成 GridView

 public GridView makeGridview(DataTable Dt)
        {
            GridView GV = new GridView();
            GV.DataSource = Dt;
            GV.DataBind();
            return GV;
        }

然后将这个 GridView 添加到电子邮件

 body = body.Replace("{Product_Details}", GridViewToHtml(makeGridview(Dt)));

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();
        }

这工作正常,但问题是我无法以我们的预定义格式设计它。这封邮件将由我网站的客户收到,因此我需要转换为我们的客户。 请指导我如何格式化它们。

如果有另一种方法可以做到这一点,那么我也愿意接受。

最佳答案

我建议您不要相信 GridView 作为您呈现的 html,而是使用您当前的数据源 (DataTable):

    public GridView CreateHtmlTable(DataTable dt)
    {
       //Do your HTML work here, like the following:
       string tab = "\t";

       StringBuilder sb = new StringBuilder();

       sb.AppendLine("<html>");
       sb.AppendLine(tab + "<body>");
       sb.AppendLine(tab + tab + "<table>");

       // headers.
       sb.Append(tab + tab + tab + "<tr>");

       foreach (DataColumn dc in dt.Columns)
       {        
       sb.AppendFormat("<td>{0}</td>", dc.ColumnName);        
       }

       sb.AppendLine("</tr>");

       // data rows
       foreach (DataRow dr in dt.Rows)
       {
                  sb.Append(tab + tab + tab + "<tr>");

    foreach (DataColumn dc in dt.Columns)
    {
        string cellValue = dr[dc] != null ? dr[dc].ToString() : "";
        sb.AppendFormat("<td>{0}</td>", cellValue);
    }

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

       sb.AppendLine(tab + tab + "</table>");
       sb.AppendLine(tab + "</body>");
       sb.AppendLine("</html>");
    }

关于c# - 如何使用格式在电子邮件中发送 gridview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19249724/

相关文章:

c# - 来自 Resharper 的可疑警告 - 我应该更改我的代码吗?

asp.net - IIS请求处理线程池与TPL线程池相同吗?

php - 如何将 PHP 电子邮件脚本连接到 Postfix?

bash - mutt:从控制台回复电子邮件

c# - 简单的就地离散傅立叶变换 (DFT)

c# - List ForEach 休息

c# - 任何人都可以指出 Microsoft Sync Framework v2 的好教程吗?

c# - 从 Paypal 获取详细信息?

c# - ASP.NET Web Api 依赖注入(inject)——单例与否

php - 保护 php 电子邮件表单