2015-07-20 65 views
-2

我正在寫asp.net中的代碼..我需要從數據庫打印問題到標籤和選項從相同的數據庫表到Radiobutton。我在下面的代碼中使用了sqldataReader,但問題是它只打印一個來自數據庫的問題,而沒有在下一個標籤中輸出下一個問題。使用SqldataReader從數據庫檢索數據到標籤

  connection.Open(); 
      SqlCommand cmd = new SqlCommand("Select * from Questable1 ", connection); 
      SqlDataReader reader = cmd.ExecuteReader(); 
      reader.Read(); 
      Label1.Text = reader["Ques"].ToString(); 
      RadioButton1.Text = reader["Option1"].ToString(); 
      RadioButton2.Text = reader["Option2"].ToString(); 
      RadioButton3.Text = reader["Option3"].ToString(); 
      RadioButton4.Text = reader["Option4"].ToString(); 

      Label2.Text = reader["Ques"].ToString(); 
      RadioButton5.Text = reader["Option1"].ToString(); 
      RadioButton6.Text = reader["Option2"].ToString(); 
      RadioButton7.Text = reader["Option3"].ToString(); 
      RadioButton8.Text = reader["Option4"].ToString(); 

      connection.Close(); 

     } 
    } 
} 

}

+0

你的邏輯看起來很混亂。所以你已經知道表中的問題數量了嗎?他們會一直相同嗎?您將不得不爲所有問題手動添加標籤。我更喜歡在這種情況下使用gridview。另外,你並沒有圍繞閱讀器循環,以便whoe表得到顯示。 – RelatedRhymes

回答

0

的DataReader會從結果集中舉行的所有行。

你可以通過它進行迭代如下...

connection.Open(); 
      SqlCommand cmd = new SqlCommand("Select * from Questable1 ", connection); 
      SqlDataReader reader = cmd.ExecuteReader(); 
      while(reader.Read()) 
{ 
//write your logic bind questions 
      // Label1.Text = reader["Ques"].ToString(); 
} 

但作爲@MukeshPanwar提到你需要更加清晰。 根據我的理解,看起來你的問題和答案是在同一個結果表中,因此問題應該重複。在對問題和答案進行約束之前,你已經排除了它。

0

使用列表視圖檢索您自己的佈局,甚至單選按鈕的數據。然後在aspx中設置這樣的單選按鈕的文本:

<%# Eval("Field_name_of_your_database") %> 

然後綁定數據,與gridview或detailview相同。只是返回數據集,然後是數據源然後是數據綁定。