我正在尝试使用while循环修改数据读取器中的数据,以使用innerHtml将数据显示为网页上HTML表上的行。它在第一次迭代中效果很好,但不会在其余数据中再次迭代。
已检查数据读取器上是否存在所有数据,因此似乎与我的while循环代码有关
关于我在做什么错的任何建议吗?
string description = "placeholder";
string desc_mod;
query.InnerHtml += "<table class='list_format'>";
using (SqlDataReader productList = SQLHelper.ExecuteQuery(query1))
if (productList.HasRows)
{
while (productList.Read())
description = (string)productList["Description"];
desc_mod = description.Substring(0, 30);
query.InnerHtml += "<tr><td><div><p>" + desc_mod + "</p</div></td></tr>";
}
query.InnerHtml += "</table>";
答案 0 :(得分:3)
您缺少一组花括号来分隔while块和using块:
string description = "placeholder";
string desc_mod;
query.InnerHtml += "<table class='list_format'>";
using (SqlDataReader productList = SQLHelper.ExecuteQuery(query1)) {
if (productList.HasRows){
{
while (productList.Read()) {
description = (string)productList["Description"];
desc_mod = description.Substring(0, 30);
query.InnerHtml += "<tr><td><div><p>" + desc_mod + "</p</div></td></tr>";
}
}
}
}
query.InnerHtml += "</table>";
如果您省略了诸如using
,while
或if
等代码块上的括号,则编译器只会将紧随其后的行视为该块的一部分。
答案 1 :(得分:0)
while语句缺少一些括号
string description = "placeholder";
string desc_mod;
query.InnerHtml += "<table class='list_format'>";
using (SqlDataReader productList = SQLHelper.ExecuteQuery(query1))
if (productList.HasRows){
{
while (productList.Read())
{
description = (string)productList["Description"];
desc_mod = description.Substring(0, 30);
query.InnerHtml += "<tr><td><div><p>" + desc_mod + "</p</div></td></tr>";
}
}
}
query.InnerHtml += "</table>";
答案 2 :(得分:0)
使用foreach
循环和DbDataRecord
string description = "placeholder";
string desc_mod;
query.InnerHtml += "<table class='list_format'>";
using (var r = SQLHelper.ExecuteQuery(query1))
{
foreach (DbDataRecord s in r)
{
description = (string)s["Description"];
desc_mod = description.Substring(0, 30);
query.InnerHtml += "<tr><td><div><p>" + desc_mod + "</p</div></td></tr>";
}
}
query.InnerHtml += "</table>";