2012-05-01 3 views
0

비슷한 질문이 stackoverflow에 답이 없지만 해결하기에 아주 가깝습니다. 그러나 기본적으로 SQL 문은 둘 이상의 값을 반환하지만 레이블에 단일 값만 표시되는 반면 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

첫 번째 단계를 시도 dr.Read()

의 각 단계와 텍스트를 대체하고; –

답변

5

루프를 통해 매번 레이블의 텍스트를 덮어 쓰게됩니다.

lblIDs.Text = ID; 

에 : 당신은 단순히 바꿀 수

lblIDs.Text += ID + " "; 

그리고 기본적으로 공백으로 구분 된 목록 라벨을 채 웁니다.

일반적인 모범 사례 프로그래밍 힌트 :이 예제에서 사용자의 UI 코드를 데이터 액세스 코드에 매우 밀접하게 연결하려고합니다. 밀 결합을 피하기 위해 MVC, 발표자 및 기타 여러 옵션을 조사해야합니다. 여기에 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

당신은 lblIDs.Text = ID에 중단 점을 설정 했어야 다음

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

lblIDs.Text = text.ToString(); 
관련 문제