2012-09-07 28 views
0

列表框填充但找不到所選值。它是空值或默認值(第一項)。每當我選擇另一個項目時,它將更改爲空。我做了!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'的列表到一個變量中,但是你沒有在任何地方使用'lstbox'變量,而是使用'lstService'。什麼是'lstService'?什麼是你正在使用的「嚮導」? –

+0

lstService是listBox的名稱。我正在使用的嚮導是Wizard1。 Wizard2是另一個單獨的嚮導。我相應地更改了當前代碼(如上所示) – Nitrodbz

+0

此外,當我單擊下一個按鈕時,lstService.items.count爲0? – Nitrodbz

回答

1

在調試器中遍歷它。

無論對象是被放置在列表框不知道自己轉換成你要找的字符串以ToString()

列表框填入正確的,因爲您可以指定與獲取的名字lstService.DataTextField = "ServiceName";

您可能需要重新處理放入ListBox中的對象,或者只是將該對象的ToString覆蓋。

相關問題