使用StringBuilder与DataSet构建动态表

时间:2012-01-12 15:37:08

标签: c# asp.net dataset stringbuilder

我正在使用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>");
            }

3 个答案:

答案 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>");