sb.Append("<table style='border:1px solid black; border-collapse:collapse; width:100%;'>");
sb.Append("<tr style='background:rgb(146,208,80); border:1px solid black;'>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("OPUS ID"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("Location"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("WMS #"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("Carton ID"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("Tracking #"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("Delivery Date"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("Carton Status"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("SKU"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("SKU Description"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("Qty Outstanding"); sb.Append("</th>");
sb.Append("</tr>");
foreach (DataRow row in dt.Rows)
{
sb.Append("<tr style='border:1px solid green; border-collapse: collapse; width:100%;'>");
for (int i = 0; i < dt.Columns.Count; i++)
{
sb.Append("<td style='border:1px solid black; border-collapse:collapse; text-align:center; padding:0%;'>");
string file = row.Field<string>(i);
sb.Append(file + "</td>");
}
sb.Append("</tr>");
}
sb.Append("</table>");
Above code is making HTML Table and binding it in email body, but something wrong happening.
image are for clear view:
I agree with @Hans Kesting using Razor syntax would be best. Especially helpful would be to move away from DataSets and DataTabes and use models for your data. This would make iterating through your data and populating a table much easier with something like WebGrid. However, if none of this is possible what I have done in the past is:
create the HTML table string in a Helper method
pass the HTML string to a Controller action method
store the HTML string into the TempData object
access the TempData object and render the table to the view using:
@Html.Raw(TempData["html"])