2013-06-02 77 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(); 
相关问题