2013-06-02 108 views
0

我一直在綁定數據庫表到文本框,我遇到了一個問題。我在這裏得到的代碼從表格中獲得了我需要的所有列,但只有1行數據顯示出來。有沒有簡單的方法讓表格中的每一行都出現在文本框中?或者其他一些文本列表?C#將每個錶行添加到數據庫的文本框

SqlConnection cn = new SqlConnection("SERVER=myserver;DATABASE=mydb;Trusted_Connection=True"); 
SqlCommand cmd = new SqlCommand(); 
SqlDataReader dr = null; 

cmd.Connection = cn; 
cn.Open(); 
cmd.CommandText = "SELECT DisasterID,DisasterType,Location,CurrentStatus,IntensityLevel,Latitude,Longitude FROM Disasters"; 
dr = cmd.ExecuteReader(); 
if (dr.Read()) { 
    txtFeeds.Text = dr["DisasterID"].ToString() + " " + dr["DisasterType"].ToString() + " " + dr["Location"].ToString() + " " + dr["CurrentStatus"].ToString() + " " + dr["IntensityLevel"].ToString() + " " + dr["Latitude"].ToString() + " " + dr["Longitude"].ToString(); 
} 
cn.Close(); 

回答

3

你需要while環路和txtFeeds.Text +=

while(dr.Read()) { 
    txtFeeds.Text += dr["DisasterID"].ToString() + " " 
    + dr["DisasterType"].ToString() + " " 
    + dr["Location"].ToString() + " " 
    + dr["CurrentStatus"].ToString() + " " 
    + dr["IntensityLevel"].ToString() + " " 
    + dr["Latitude"].ToString() + " " + dr["Longitude"].ToString(); 
} 

追加每一行文本框如果您需要更多的性能,你可以使用StringBuilder使用StringBuilder.ToString方法追加文本,最後設置文本框的文本。

編輯。

StringBuilder sb = new StringBuilder(); 
while (dr.Read()) 
{ 
    sb.AppendLine(dr["DisasterID"].ToString() + " " 
    + dr["DisasterType"].ToString() + " " 
    + dr["Location"].ToString() + " " 
    + dr["CurrentStatus"].ToString() + " " 
    + dr["IntensityLevel"].ToString() + " " 
    + dr["Latitude"].ToString() + " " + dr["Longitude"].ToString()); 
} 

txtFeeds.Text = sb.ToString(); 
+0

這很好,但你能告訴我如何在每一行/條目之後開始新行嗎?謝謝 –

+0

@NickV添加了示例代碼,'StringBuilder.AppendLine'會將每個recode添加爲新行 – Damith

+0

正是我需要的,謝謝! –

1

首先它是一個壞主意,在一個單一的文本框從表中試圖顯示記錄。 如果您仍然想這樣做,

使用while循環,而不是IF條件

while(dr.Read()) 
{ 

} 

使用字符串建設者和所有的列值追加到它,而循環存在於使用的值後字符串生成器並將其設置爲字段。

StringBuilder values = new StringBuilder(); 

while(dr.Read()) { 
      values.Append(dr["DisasterID"].ToString() + " " + dr["DisasterType"].ToString() + " " + dr["Location"].ToString() + " " + dr["CurrentStatus"].ToString() + " " + dr["IntensityLevel"].ToString() + " " + dr["Latitude"].ToString() + " " + dr["Longitude"].ToString()); 
     } 

txtFeeds.Text = values.ToString(); 
相關問題