如何选择数据表中的第一行数据?并在标签盒和radiobuttons上显示内容?
OleDbDataAdapter dAdap = new OleDbDataAdapter(command);
DataTable dTable = new DataTable();
dAdap.Fill(dTable);
foreach(DataRow row in dTable.Rows)
{
question = row["QUESTION"].ToString();
c1 = row["C1"].ToString();
c2 = row["C2"].ToString();
c3 = row["C3"].ToString();
c4 = row["C4"].ToString();
ans = row["ANSWER"].ToString();
}
lblQuest.Text = question;
btnA.Text = c1;
btnB.Text = c2;
btnC.Text = c3;
btnD.Text = c4;
我试过这段代码,但它只显示最后一行。当我尝试重新运行查询时。它没有刷新/替换/覆盖值,它只显示第一个查询的最后一行。
编辑:
i = 0;
x = 0;
lblQuest.Text = dTable.Rows[i].Field<string>(x);
btnA.Text = dTable.Rows[i].Field<string>(x + 1);
btnB.Text = dTable.Rows[i].Field<string>(x + 2);
btnC.Text = dTable.Rows[i].Field<string>(x + 3);
btnD.Text = dTable.Rows[i].Field<string>(x + 4);
答案 0 :(得分:0)
是的,因为变量将在每次迭代时被覆盖,并且最终只有最后一次迭代的值
答案 1 :(得分:0)
如果您只想选择第一行值,请使用dTable[0][ColumnIndex]
要在按钮上加载下一行,请执行以下操作:
int currentRow = 0;
DataTable myDt;
private void LoadNextRow()
{
currentRow++;
myLabel.Text = myDt[currentRow]["MyColumn"].ToString();
}
private void OnButtonClick(....)
{
LoadNextRow();
}
答案 2 :(得分:0)
您的问题是每个循环都会覆盖您的变量。一旦循环遍历整个DataTable,它就会以最后一行结束,只显示该行。
要获得所需的功能,您需要将DataTable存储为属性而不是本地变量。
此处的一种方法是跟踪您当前正在查看的行。然后当单击下一个按钮时,只需++当前数字并重新分配值。
import {ListItem} from './ListItem';
export class DirectoryListItem {
constructor(
public listIt: ListItem;
// instead of repeating code, you inject your base-obj listItem
public firstName: string,
public lastName: string,
public mobileNumber: string,
public internalNumber: string,
) { }
}