我有一个应用程序,我用来发送包含整个表的电子邮件,我不知道如何在那里获取动态数据。我确定我必须使用for循环,但我不知道如何用它来获取数据行。
这是我到目前为止所拥有的:
msg.To.Add(selected);//put in custom account info
msg.Subject = "Message Subject";
msg.IsBodyHtml = true;
msg.Body = "<html>"+
"<body>"+
"<center>"+
"<h2>Your entire inventory:</h2>"+
"<table>"+
"<th>Product</th>"+
//for each loop
"<th>Quantity</th>"+
//for each loop
"</body>"+
"</html>";
如果您需要任何其他代码,请告诉我。
答案 0 :(得分:1)
就个人而言,我会避免使用字符串连接来构建HTML。它不仅会使您的代码变得笨拙,而且还会冒着编码输出时意外错误的风险。另一种方法是使用LINQ to XML来构建HTML。代码看起来像这样:
var html = new XDocument(
new XElement("html",
new XElement("body",
new XElement("h2", "Your entire inventory:"),
new XElement("table",
new XElement("tr",
new XElement("th", "Product"),
from item in orders
select new XElement("td", item.ProductName)),
new XElement("tr",
new XElement("th", "Quantity"),
from item in orders
select new XElement("td", item.Quantity))))));
msg.Body = html.ToString();
答案 1 :(得分:1)
我假设您已经拥有MySQL Connector for .NET。这里有一些代码可以让你朝着正确的方向前进。如果你不知道如何使用C#从数据库中读取,你应该阅读它。 MySQL Connector Documentation
只是一个简单的Product类来保存您需要的东西。
public class Product
{
public String ProductName { get; set; }
public Int32 Quantity { get; set; }
}
这是一个快速的数据库类概述。
public class DB
{
string connString = "Your Database Connection String";
public List<Product> GetProductsAndQuantity()
{
string query = "SELECT product, quantity FROM yourTable";
List<Product> prodList = new List<Product>();
using (SqlConnection connection = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand(query, connection);
connection.Open();
SqlDataReader reader = cmd.ExecuteReader();
try
{
while (reader.Read())
{
// Create new Product
Product p = new Product();
p.ProductName = (String)reader[0];
p.Quantity = (Int32)reader[1];
// Add product to list
prodList.Add(p);
}
}
finally
{
reader.Close();
}
}
return prodList;
}
}
这是您构建电子邮件的地方。
DB db = new DB();
List<Product> prodList = db.GetProductsAndQuantity();
msg.Body...
msg.Body += " <table> <tr><th>Product</th> <th>Quantity</th></tr> ";
foreach (Product p in prodList)
{
msg.Body += "<tr><td>" + p.ProductName + "</td><td>"
+ p.Quantity + "</td></tr>";
}
msg.Body += "</table> ";