2013-04-09 24 views
0

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

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

回答

1

希望这将工作:

首先您必须在他们所需要的顺序复选框的数组将呈现:

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

然后设置类似这样的文字:

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

我得到“索引超出了数组边界”http: //dl.dropbox.com/u/9446763/Capture2.JPG – techora 2013-04-09 16:14:05

+0

噢,对不起。修正。 – 2013-04-09 16:16:12

+0

这个工作!非常感谢你! – techora 2013-04-09 16:21:29

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

我得到的参数与“参数1:无法从‘字符串’到‘廉政’转变” – techora 2013-04-09 15:57:07

+0

我无法找到我的解决方案是错误在这里工作按预期。 : – 2013-04-09 16:01:34

+0

“prs [0]”应该是“prs [rowcount]” – Polyfun 2013-04-09 16:13:47

0

引用t Ø解决@Alina了,你可以试试

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

随着我得到错误“对象引用未设置为实例的对象。“ – techora 2013-04-09 16:15:30