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);
}
我正在使用上面的代码在表格中打印数据。但是所有字段都在一行中(行没有递增)。你能告诉我如何在多行中显示。
答案 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);
}