在asp.net中显示表中的记录

时间:2011-06-07 14:08:02

标签: c# asp.net datareader

        conn.Open();

        TableRow r = new TableRow();
        TableCell c = new TableCell();

        SqlDataReader reader = comm.ExecuteReader();


          while (reader.Read())
        {
              c.Controls.Add(new LiteralControl(reader["Name"].ToString()));
                r.Cells.Add(c);
                Table1.Rows.Add(r);

                c.Controls.Add(new LiteralControl(reader["RollID"].ToString()));
                r.Cells.Add(c);
                Table1.Rows.Add(r);
        }

我正在使用上面的代码在表格中打印数据。但是所有字段都在一行中(行没有递增)。你能告诉我如何在多行中显示。

3 个答案:

答案 0 :(得分:0)

目前,您正在创建单个行和单元格,并将所有控件添加到该单个单元格中。

虽然你想要的东西当然是可能的(只要确保为你从阅读器中拉出的每个数据元素创建一个新单元格,并通过while循环为每次迭代创建一个新行),你有没有理由这样做?使用类似GridView的内容来展示这些内容?

答案 1 :(得分:0)

为每一行创建一个新的TableRow实例。你只是在迭代结果集之前创建了一个实例。

答案 2 :(得分:0)

在WHILE循环的顶部移动TableCell和TableRow变量的构造。通过这种方式,您将为阅读器中的每条记录获取一个新行和一个新单元格。

考虑如下所示的代码(评论是我的):

    conn.Open();

    // MOVE THESE
    /**
    TableRow r = new TableRow();
    TableCell c = new TableCell();
    **/

    SqlDataReader reader = comm.ExecuteReader();


      while (reader.Read())
    {

          // TO HERE..  so that a new row and cell are created for each record in your reader
          TableRow r = new TableRow();
          TableCell c = new TableCell();

          c.Controls.Add(new LiteralControl(reader["Name"].ToString()));
            r.Cells.Add(c);
            //Table1.Rows.Add(r);   -- ADD THE ROW AFTER THE SECOND FIELD... THEN YOU HAVE 2 COLUMNS

            c.Controls.Add(new LiteralControl(reader["RollID"].ToString()));
            c = new TableCell(); // CREATE A NEW CELL, FOR A NEW COLUMN
            r.Cells.Add(c);
            Table1.Rows.Add(r);
    }