增量ExecuteReader中的复选框号

时间:2013-04-09 15:49:51

标签: c# checkbox

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

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();
        }

3 个答案:

答案 0 :(得分:1)

这有望起作用:

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

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

然后设置如下文字:

while (prs.Read())
{
    chks[rowcount].Text = prs[0].ToString();
    rowcount++;
}

答案 1 :(得分:0)

this.Controls[string.Format("QuesChk{0}", rowcount)].Text = prs[rowcount].ToString(); 

答案 2 :(得分:0)

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

(this.FindControl(string.Format("QuesChk{0}", rowcount)) as CheckBox).Text = prs[rowcount].ToString();