2011-12-01 2 views
3

내가 XML 파일로 채워되는 ASP.NET DropDownList으로 문제가 있습니다 : 나는 시도하고 선택된 값을 검색 할 때내 DropDownList의 SelectedItem이 작동하지 않는 이유는 무엇입니까?

rblState.DataSource = dsState; 
rblState.DataValueField = "abbreviation"; 
rblState.DataTextField = "name"; 
rblState.DataBind(); 

이 잘 작동하고 그러나 모두 표시 올바른 데이터를 문제가 발생합니다

string state = rblState.SelectedItem.Text; 
Console.WriteLine(state); 

이렇게하면 항상 목록의 첫 번째 값만 출력됩니다.

누구든지 해결책을 알고 계십니까?

+1

이 드롭 다운의 'AutoPostBack' 속성이 true로 설정되어 있습니까? – MilkyWayJoe

답변

8

아마도 PostBack에 DataSource을 다시 바인딩 할 것입니다.

//only bind on the first request 
if (!Page.IsPostBack) 
{ 
    rblState.DataSource = dsState; 
    rblState.DataValueField = "abbreviation"; 
    rblState.DataTextField = "name"; 
    rblState.DataBind(); 

} 
+1

당신 덕분에 도와 줬어.이게 효과가 없었는데, 왜 내가 전에 생각하지 않았는 지 모르겠다. – RyanDreggs

2

if (!Page.IsPostBack) 
{ 
    //your code here 
} 
+0

이 답변은 이미 나열되어있다. – akdora

0

컨트롤이 runat="server" 속성 집합이 있는가에 채우는 코드를 넣어보십시오? 저것은 우리를 모두 한순간에 또는 또 다른 물기에 물 렸습니다.

또한 나는 목록 항목을 변경할 때 서버에 알리도록 AutoPostBack="true"을 설정해야한다고 생각합니다. 그렇지 않으면 새로 선택된 옵션으로 서버를 업데이트하지 않는다면 클라이언트 측에 알려야한다는 사실을 알고 있습니다.

0

모든 변수와 마찬가지로 하위 속성을 호출하기 전에 항상 변수를 확인해야합니다.

SelectedIndex != -1을 선택하여 값이 선택되어 있는지 확인하거나 SelectedItem != null인지 확인하십시오.

DropDownList을 페이지 첫 번째로드에만 바인딩해야합니다 (케말이 명시한대로).