2013-04-09 20 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