2012-09-07 1 views
0

목록 상자가 채워지지만 선택한 값을 찾을 수 없습니다. null 또는 기본값 (첫 번째 항목)입니다. 다른 항목을 선택할 때마다 null로 변경됩니다. 나는! ispostback을했지만 여전히 아무것도하지 않았다. asp.net/c#/sql의 마법사 사용. 어떤 도움을 주셔서 감사합니다.ListBox SelectValue가 null이고 selectindex = -1

 protected void Page_Load(object sender, EventArgs e) 
    { 
     ListBox lstService = (ListBox)Wizard1.FindControl("lstService"); 
     string s = lstService.SelectedValue.ToString(); 
     int s1 = lstService.SelectedIndex; 

     if (s == "MarketTrack Toys") 
     { 
      Wizard2.Visible = true; 
     } 

     if (!Page.IsPostBack) 
     { 
      BindGrid(); 
     } 

     if ((Wizard1.ActiveStepIndex <= 5) && (Wizard1.ActiveStepIndex != 0)) 
     { 
      Wizard1.DisplaySideBar = true; 
      Wizard2.DisplaySideBar = false; 
     } 
     else 
     { 
      Wizard1.DisplaySideBar = false; 
      Wizard2.DisplaySideBar = true; 
     } 

    } 

    private void BindGrid() 
    { 

     dAS = new DataAccessClass(); 
     DataSet ds = new DataSet(); 
     DataTable dt = new DataTable(); 


     ds = dAS.func_FillDataset("select servicename from dbo.Services", "Services"); 
     ListBox lstService = (ListBox)Wizard1.FindControl("lstService"); 
     lstService.DataSource = ds; 
     lstService.DataTextField = "ServiceName"; 
     lstService.DataValueField = "ServiceName"; 
     lstService.DataBind(); 

     if (lstService.Items.Count > 0) 
     { 
      lstService.SelectedIndex = 0; 
     } 
    } 
+0

'FindControl'을 실행하여'lstService'라는 이름의리스트를 변수에 넣습니다. 그러나 당신은'lstService'를 사용하는 대신에'lstbox' 변수를 사용하지 않습니다. 'lstService' 란 무엇입니까? 사용중인 "마법사"란 무엇입니까? –

+0

lstService는 listBox의 이름입니다. 내가 사용하고있는 마법사는 Wizard1입니다. Wizard2는 또 다른 별도의 마법사입니다. 그에 따라 현재 코드를 변경했습니다 (위 그림 참조) – Nitrodbz

+0

또한, 다음 버튼을 클릭하면 lstService.items.count가 0이됩니까? – Nitrodbz

답변

1

디버거에서 살펴보십시오. 리스트 박스에 배치되고 무엇이든 객체

당신이 찾고있는 문자열로 자신을 변환 모르는 ToString()

목록 상자는 당신이 이름을 얻는 방법을 지정하기 때문에 제대로 채워과 lstService.DataTextField = "ServiceName";

ListBox에 넣을 개체를 다시 작성하거나 대신 해당 개체의 ToString에 다시 정의해야 할 수 있습니다.