我正在尝试创建一个搜索选项,该选项将从我的 OleDb 数据库中提取用户数据,它可以工作,但是结果是这样的:
tripleUser
tripleUser
tripleUser False
虽然预期的结果应该如下所示:
tripleUser False
tripleUser True
tripleUser False
如您所见,只打印最后一个用户布尔值,为什么会这样?
int rowCount = dt.Rows.Count;
for (int i = 0; i < rowCount; i ++)
{
TableRow row = new TableRow();
TableCell cell = new TableCell();
Label label = new Label();
while(tReader.Read())
{
label.Text = tReader.GetString(0);
cell.Controls.Add(label);
row.Cells.Add(cell);
cell = new TableCell();
label = new Label();
label.Text = tReader.GetBoolean(1).ToString();
cell.Controls.Add(label);
row.Cells.Add(cell);
table.Rows.Add(row);
row = new TableRow();
cell = new TableCell();
}
TableHolder.Controls.Add(table);
}
我使用调试模式和断点来确定一切是否按预期工作,以及是否一切按预期工作,这意味着这是一个 UI 问题。
admin
字段可能是 DBNull,在这种情况下,您可以避免这种情况并返回 false :
Boolean flag = tReader["admin"] as bool? ?? false;
if(flag)
{
label.Text="True";
}
else
{
label.Text="False";
}
编辑
您所需要的只是将实例设置为循环内的行、单元格和标签。
row = new TableRow();
cell = new TableCell();
label = new Label();
label.Text = tReader.GetString(0);
cell.Controls.Add(label);
row.Cells.Add(cell);
cell = new TableCell();
label = new Label();
label.Text = tReader.GetBoolean(1).ToString();
cell.Controls.Add(label);
row.Cells.Add(cell);
table.Rows.Add(row);