0

There is a similar question that is unanswered on stackoverflow, but I believe I am very close to solving it. But basically, my sql statement returns more than one value, but only a single value is displayed in the label whereas it should be 4 or 5 values.

  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();
    }

any help would be greatly appreciated. Thanks!

4

3 に答える 3

5

ループのたびにラベルのテキストを上書きしています。あなたは単に変更することができます:

lblIDs.Text = ID;

に:

lblIDs.Text += ID + " ";

そして基本的に、ラベルにスペース区切りのリストを入力します。

また、一般的なプログラミングのベスト プラクティスのヒントとして: この例では、UI コードをデータ アクセス コードに非常に緊密に結合しています。密結合を避けるために、MVC、Presenter、およびその他のいくつかのオプションを検討する必要があります。初心者向けの記事はこちらです。

于 2012-05-01T16:42:42.373 に答える
5

このようなことを意味しますか?

var ids = List<string>();
while (dr.Read()) 
{
    ids.Add(dr["ID"].ToString());            
}
lblIDs.Text = String.Join(", ", ids);
于 2012-05-01T16:42:55.377 に答える
2

各ステップでテキストを置き換えていますdr.Read()

以下を試してください

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

lblIDs.Text = text.ToString();
于 2012-05-01T16:44:13.340 に答える