0

我需要将查询结果放入三个复选框的文本字段中。我基本上需要它来做到这一点:

QuesChk0.Text = "Question 4 Here"
QuesChk1.Text = "Question 3 Here"
QuesChk2.Text = "Question 1 Here"

做 QuesChk0.Text = prs[0].ToString(); 会给我第一个问题,但不是其他两个。我不知道如何动态增加复选框名称后的数字(QuesChk0 <---)。

        System.Data.OleDb.OleDbConnection pcn;
        System.Data.OleDb.OleDbCommand pcm;
        System.Data.OleDb.OleDbDataReader prs;

        pcn = new System.Data.OleDb.OleDbConnection("");
        pcm = new System.Data.OleDb.OleDbCommand();
        pcn.Open();

        pcm.Connection = pcn;

        var tableSql = String.Format(@"SELECT TOP 3 Question FROM Questions ORDER BY NEWID()");

        pcm.CommandText = tableSql;
        prs = pcm.ExecuteReader();

        var rowcount = 0;
        while (prs.Read())
        {
            QuesChk0.Text = prs[0].ToString();
            rowcount++;
        }
        prs.Close();
        pcn.Close();
        }
4

3 回答 3

1

这将有望工作:

首先,您按照需要显示的顺序创建一组复选框:

CheckBox[] chks = new CheckBox[] { QuesChk0, QuesChk1, QuesChk2 };

然后像这样设置文本:

while (prs.Read())
{
    chks[rowcount].Text = prs[0].ToString();
    rowcount++;
}
于 2013-04-09T16:06:31.137 回答
0
this.Controls[string.Format("QuesChk{0}", rowcount)].Text = prs[rowcount].ToString(); 
于 2013-04-09T15:54:42.627 回答
0

参考@Alina给出的解决方案,你可以试试

(this.FindControl(string.Format("QuesChk{0}", rowcount)) as CheckBox).Text = prs[rowcount].ToString(); 
于 2013-04-09T16:13:42.880 回答