2012-04-25 26 views
2

我有一個簡單的Windows窗體應用程序(帶有Access數據庫)與一個組合框(cmbStores),它是以最簡單的方式可以想象的。C# - 獲取Windows窗體應用程序中SelectedItem的值

問題:我無法獲取所選項目的值。

這裏是我正在填充此組合框:

// Variable declaration 
     string strQueryStores = "SELECT StoreNumber FROM tblStoresAndRegion ORDER BY StoreNumber"; 
     string strConnectionString = UtilityClass.GetConnectionString(); 
     OleDbConnection connStores; 
     OleDbDataReader readerStores = null; 

     connStores = new OleDbConnection(strConnectionString); 

     try 
     { 
      connStores.Open(); 
      OleDbCommand sqlGetStores = new OleDbCommand(strQueryStores, connStores); 

      cmbStore.Items.Clear(); 
      cmbStore.Items.Add("All"); 
      if (connStores != null) 
      { 
       readerStores = sqlGetStores.ExecuteReader(); 

       if (readerStores.HasRows) 
       { 
        while (readerStores.Read()) 
        { 
         cmbStore.Items.Add (Convert.ToInt32(readerStores["StoreNumber"])); 
        } 
       } 
      } 
      cmbStore.SelectedIndex = 0; 

     } 

     catch (OleDbException oledblEX) 
     { 
      MessageBox.Show(oledblEX.Message); 
     } 

     finally 
     { 
      if (readerStores != null) 
       readerStores.Close(); 
      if (connStores != null) 
       connStores.Close(); 
     } 

這是我想獲得所選項目的價值。

int nStoreNumber = Convert.ToInt32(cmbABSM.SelectedItem); 
+0

您用來獲取選定項目的代碼在哪裏?你是否遇到異常?值不正確?當您嘗試獲取所選項目時發生了什麼? – Khan 2012-04-25 15:24:20

+1

你的代碼中有一些不一致。填寫_cmdStore_框,並嘗試讀取_cmbABSM_框。這是真的嗎,還是隻是輸錯了? – Matzi 2012-04-25 15:27:28

+0

@Matzi ...我輸錯了。代碼應該是int nStoreNumber = Convert.ToInt32(cmbStore.SelectedItem); – KalC 2012-04-25 15:32:24

回答

3

我知道我是一個有點晚,但是效果很好:

int? nStoreNumber = cmbABSM.SelectedValue as int?; 
if (nStoreNumber==null) 
    return; 
3

嘗試使用SelectedValue如果ValueMember設置爲組合框,否則默認爲Text屬性:

//If ValueMember is set 
int nStoreNumber = Convert.ToInt32(cmbABSM.SelectedValue); 

//Otherwise 
int nStoreNumber = Convert.ToInt32(cmbABSM.Text); 

無論哪種方式,我建議您確保所選內容的值是一個有效的int

int nStoreNumber; 

if (!int.TryParse(cmbABSM.SelectedValue, out nStoreNumber)) 
{ 
    //This is not a valid number. Notify the user. 
} 
+0

嗨傑夫,嘗試使用此...不起作用。 – KalC 2012-04-25 15:39:48

2

確實

Int32.Parse(box.SelectedItem.ToString()); 

爲你工作?

+0

這實際上有效! – KalC 2012-04-25 15:39:15

+2

您應該真的使用項目上的「Value」或「Text」屬性。讀者不清楚「ToString」返回的是哪一個。 – Servy 2012-04-25 15:49:29

1

您可以使用SelectedItem.Value或SelectedValue,實際區別在於它們在沒有選擇時返回的內容。

SelectedItem.Value返回值,如果沒有選定的項目,將返回null。

的SelectedValue也返回值,但如果沒有選中的項將返回一個空字符串

延伸閱讀:

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.selecteditem.aspx

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.selectedvalue.aspx

相關問題