无法使用asp.net中的HTML元素构造StringBuilder对象

时间:2013-11-14 07:24:17

标签: c# asp.net stringbuilder

我正在使用Dynamic HTML Table创建DataTable来自C#的数据的标记。我正在使用StringBuilder对象构建的HTML标记。在编译时,我收到错误“无法将字符串转换为字符串构建器

代码:

DataTable dt=new DataTable();
dt=GetData();
StringBuilder strDeviceList=new StringBuilder();
strDeviceList = "<table style='width:100%;text-align:center;'>" +
                            "<tr>" +
                                "<td> Quote ID</td><td>Device</td><td> Generation</td><td>Condition</td><td>Price</td>" +
                            "</tr>";                          
            foreach (DataRow row in dt.Rows)
            {
                strDeviceList.Append("<tr>" +
                 "<td>" + row["QuoteID"] + "</td><td>" + row["Name"] + "</td><td>" + row["Generation"] + "</td><td>" + row["Condition"] + "</td><td>" + row["Price"] + "</td>" +
                 "</tr>");
            }
strDeviceList.Append("</table>");

有什么想法吗? 帮助感谢!

2 个答案:

答案 0 :(得分:3)

更改此行,在您尝试将string分配给StringBuilder的代码中,这是编译错误的原因

strDeviceList.Append("<table style='width:100%;text-align:center;'>" +
                            "<tr>" +
                                "<td> Quote ID</td><td>Device</td><td> Generation</td><td>Condition</td><td>Price</td>" +
                            "</tr>"); 

或更清洁

strDeviceList.Append("<table style='width:100%;text-align:center;'>");
strDeviceList.Append("<tr>");
strDeviceList.Append("<td> Quote ID</td><td>Device</td><td> Generation</td><td>Condition</td><td>Price</td>");
strDeviceList.Append("</tr>"); 

您可以使用AppendFormat使用字符串

附加动态值
foreach (DataRow row in dt.Rows)
{
    strDeviceList.AppendFormat("<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td><td>{4}</td></tr>",row["QuoteID"],row["Name"],row["Generation"],row["Condition"],row["Price"]);
}

答案 1 :(得分:0)

strDeviceList = "...."; //wrong

strDeviceList.AppendLine("...."); //use this
strDeviceList.AppendFormat("<td>{0}</td>", row["Name"]); //even smarter

另一件事是StringBuilder .Append比字符串连接运算符

具有更好的性能
//instead of native string concat
string str = "aaa" + "bbb" + "ccc";

//builder is faster when performing multiple string concat
StringBuilder builder = new StringBuilder();
builder.Append("aaa");
builder.Append("bbb");
builder.Append("ccc");
string str = builder.ToString();