2012-05-01 9 views
0

stackoverflowには未回答の同様の質問がありますが、私はそれを解決することに非常に近いと思います。しかし、基本的に、私のSQL文は複数の値を返しますが、ラベルには1つの値しか表示されませんが、4つまたは5つの値でなければなりません。複数の値をsqlでラベルに返す方法

protected void btnPopulate_Click(object sender, EventArgs e) 
    { 

     SqlConnection con = new SqlConnection(strings.settings.connectionString); 
     SqlCommand command = new SqlCommand("SELECT ID FROM dbo.MDRMASTER WHERE MASTERPID = @MASTERPID",con); 
     command.Parameters.Add("@MASTERPID", SqlDbType.NVarChar).Value = txtMASTERID.Text; 
     con.Open(); 
     SqlDataReader dr = command.ExecuteReader(); 
     while (dr.Read()) 
     { 
      string ID = dr["ID"].ToString(); 
      lblIDs.Text = ID; 
     } 
     con.Close(); 
    } 

ご協力いただければ幸いです。ありがとう!

+0

あなたの最初のステップは、lblIDs.Text = IDにブレークポイントを設定することであったはず試しの各ステップでテキストを置き換えています。 –

答えて

5

ループのたびにラベルのテキストを上書きしています。

lblIDs.Text = ID; 

に:あなたは、単に変更される可能性が

lblIDs.Text += ID + " "; 

そして、基本的にスペースで区切られたリストでラベルを取り込みます。

また、一般的なベストプラクティスのプログラミングヒントとして:この例では、データアクセスコードにUIコードを非常に強く結合しています。タイトなカップリングを避けるには、MVC、Presenterなどのオプションを調べる必要があります。ここにはarticle for startersがあります。

+3

ループを開始する前に 'lblIDs.Text = string.Empty'を実行して、以前の値をすべてクリアしてください。 –

5

このような意味ですか?

var ids = List<string>(); 
while (dr.Read()) 
{ 
    ids.Add(dr["ID"].ToString());    
} 
lblIDs.Text = String.Join(", ", ids); 
2

あなたはdr.Read()

var text = new StringBuilder(); 
while (dr.Read()) 
{ 
    text.Append(dr["ID"].ToString()); 
} 

lblIDs.Text = text.ToString(); 
関連する問題