2013-08-16 3 views
3

저는 C#에 익숙하지 않으므로이를 염두에 두십시오.C# ListBox에 선택 항목이 있음을 인식하지 못합니다.

나는 편안한 웹 서비스에 대한 교류 # 프론트 엔드를 짓고 있어요 그리고 난에 항목을 넣어 가지고 목록 상자가 : 그럼

listBox.DataSource = list; 
listBox.DataTextField = "name"; 
listBox.DataValueField = "id"; 
listBox.DataBind(); 

내가 항목을 선택하고이 코드를 활성화 버튼을 클릭합니다 :

long id = Convert.ToInt64(listBox.SelectedItem.Value); 

문제는 SelectedItem이 null이라는 것입니다.

내가 말했듯이, 나는 C#에 익숙하지 않으므로 잘못 될 수 있다는 단서가 없다. 당신의 Page_Load 이벤트에

+0

언제 데이터 바인딩합니까? – Matthew

+1

먼저 listBox에 항목을 추가해야합니다. 그러면 단추를 클릭하기 전에 하나를 클릭해야합니다. –

+0

Winform 또는 wpf 또는 Asp.net? –

답변

4

, 이렇게 :

if(!IsPostBack) 
{ 
    listBox.DataSource = list; 
    listBox.DataTextField = "name"; 
    listBox.DataValueField = "id"; 
    listBox.DataBind(); 
} 

참고 :이 목록 상자를 처음 바인딩 페이지가로드가 아닌 모든이 선택한 항목을 닦고 있었는지, 이는 다시 게시에있다 전에. ASP.NET에서 클릭 이벤트 처리기는 Page_Load 이벤트가 발생한 후에 발생하므로 바인딩 할 때 조건을 지정하지 않으면 이벤트 처리기가 사용자를 찾기 전에 모든 포스트 백이 데이터를 지울 것입니다 선택된.

+0

감사합니다. 나는 너무 오랫동안 그 일을했습니다. 그리고 그 설명은 많은 도움이되었습니다. – Maroon5Five

+0

문제는 없지만 항상 ASP.NET에서 얻는 작은 것들입니다. 앞으로 데이터 나 선택한 항목이 사라지면 대부분이 문제가되기 때문에이를 찾으십시오. –

2
if(!Page.IsPostBack) 
{  
    listBox.DataSource = list; 
    listBox.DataTextField = "name"; 
    listBox.DataValueField = "id"; 
    listBox.DataBind(); 
} 

이것은 사용자의 Page_Load에 있어야합니다.

0

포스트 백에서 선택 항목을 크리닝하지 않도록 올바르게 코드화 한 경우에도 동일한 증상을 피하기 위해 충족되어야하는 또 다른 요구 사항이 있습니다. DataValueField를 제공하면 해당 열의 값이 고유해야합니다. 질문보기 ASP.NET DropDownList not retaining selected item on postback

관련 문제