2013-02-06 3 views
0

asp.net에서 초보자입니다. asp.net의 드롭 다운 목록을 채우는 측면에서 더 적절한 것이 무엇인지 물어보고 싶습니다. 데이터 소스를 사용하거나 sqldatareader 및 for 루프를 사용합니다.asp.net의 드롭 다운 목록을 동적으로 채우는 것

For i = 1 To 20 
      etc.CommandText = "select Classification from schemaItemDetails.AssetClassification where AC_ID = " & i & "" 
      Dim dr As SqlDataReader = etc.ExecuteReader 
      While (dr.Read()) 
       ddoneclassification.Items.Add(dr.GetString(0)) 
      End While 
      dr.Close() 
     Next 

의 SqlDataSource이 하나를 사용에 차이가 있습니까? :

나는 내 샘플 코드는 여기에의 SqlDataReader 개체와 루프를 사용하고 나는 드롭 다운을 채우기 위해 sqldatasource를 결코 사용하지 않는다.

답변

1

내 생각에 가장 쉽고 가장 좋은 해결책은 DropDownList의 DataSource 속성을 설정하는 것입니다. 이 경우 모든 필요한 작업이 장면 뒤에서 수행되며 db 서버와 웹 서버 간의 동기화 데이터는 필요하지 않습니다. 내가 당신이라면 단 하나의 요청이 즉, DB 서버에

"select Classification from schemaItemDetails.AssetClassification where AC_ID between 1 and 20" 
0

을 전송하는 대신 루프를 수행 할 수 있도록 또한

, 내가 SQL을 수정하는 것,에서 20 개 항목을 받으십시오 쿼리 (SELECT TOP 20 ID,Name from YourTable WHERE ..)와 드롭 다운 컨트롤

ddoneclassification.DataSource=dr 
ddoneclassification.DataTextField="Name" 
ddoneclassification.DataValueField="ID" 
ddoneclassification.DataBind() 

가정에 바인딩 당신은 당신의 쿼리의 결과 집합에 이름과 ID라는 두 필드가 있습니다.

0

거의 같지만 "while"루프가 제거되어 더 많은 결과를 반환하는 쿼리로 바뀝니다. Read() 메서드는 호출 될 때마다 인덱스를 증가시키고 루프 검사가 수행 될 때마다 인덱스가 증가하므로 원본 코드가 거의 정상적으로 처리됩니다.

데이터 바인딩이 또 다른 옵션이 될 수 있지만 이는 분명 유효합니다. 나는 그것을 틀린 것으로 확실히 생각하지 않을 것이다.

etc.CommandText = "select Classification from schemaItemDetails.AssetClassification where AC_ID between 1 and 20" 
Dim dr As SqlDataReader = etc.ExecuteReader 
While (dr.Read()) 
    ddoneclassification.Items.Add(dr.GetString(0)) 
End While 
dr.Close() 

주의 : 다른 데이터베이스는 "BETWEEN"을 다르게 처리하므로 사용자의 작업 방식을 확인하십시오. 데이터베이스에 포함/제외되는 경계에 따라 where AC_ID>= 1 and AC_ID>=20을 사용해야 할 수도 있습니다.

this page 하단의 자세한 정보

0

드롭 다운 목록을 채우려면 데이터 소스를 사용해야한다고 생각합니다. 드롭 다운 목록에 대한 데이터 소스를 선택하고 구성하십시오. Sqldatareader는 기본적으로 순방향 순차적 방식으로 데이터를 읽는 데 사용되지만 데이터 소스는 데이터베이스와 웹 페이지 간의 연결을 설정하는 데 사용됩니다.

이 비디오를 보시려면 : http://www.youtube.com/watch?v=sOE_hA2NLBI

관련 문제