我正在使用StringBuilder从DataSet动态构建表。它分为两部分,一部分用于创建标签及其尺寸和列顺序。这部分我已经工作了。我坚持的是如何获得具有“值”的列然后附加字符串以完成构建表。
有25列,但通常只有17左右的表。我还需要过滤掉第一列。我无法想到如何做到这一点。这就是我到目前为止所拥有的。它只是拉出DS中的第一个值。我也可以更改索引号,但在这种情况下我不能真正这样做,因为每列的数量和索引都是未知的。
DataSet valuesSet = getBlendInfo.GetProcessValues(reqID);
foreach (DataRow dRow in valuesSet.Tables[0].Rows)
{
tblString.Append("<td>");
tblString.Append(dRow[0].ToString());
tblString.Append("</td>");
}
答案 0 :(得分:3)
你只需要使用嵌套循环,如下所示:
foreach (DataRow row in table.Rows)
{
tblString.Append("<tr>");
for (int i = 0; i < table.Columns.Count; i++)
{
tblString.Append("<td>");
tblString.Append(row[i].ToString());
tblString.Append("</td>");
}
tblString.Append("</tr>");
}
在阅读null
row[i]
答案 1 :(得分:2)
尝试:
DataSet valuesSet = getBlendInfo.GetProcessValues(reqID);
foreach (DataRow dRow in valuesSet.Tables[0].Rows)
{
bool firstColumn = true;
foreach (DataColumn dbColumn in valuesSet.Tables[0].Columns)
{
if (firstColumn)
firstColumn = false;
else
{
tblString.Append("<td>");
tblString.Append(dRow[dbColumn].ToString());
tblString.Append("</td>");
}
}
}
答案 2 :(得分:0)
//This way you can create a row with the column names
blString.Append("<tr>");
foreach(var col in valuesSet.Tables[0].Columns)
{
tblString.Append("<td>");
tblString.Append(col.ToString());
tblString.Append("</td>");
}
blString.Append("</tr>");