2015-07-10 164 views
-1

我在Windows窗體上有兩個控件 - 一個Combobox和一個ListBox。實體框架Winforms

我想填充列表框,基於從ComboBox中選定的值,但我不斷收到以下錯誤。

無法轉換類型 'System.Data.Entity.DynamicProxies.Category_B0496327038CB6B25A6EF7B750129DD7B44A87BE41C4E2DB0F8D7A00898B060F' 的目的爲類型 'System.IConvertible'。

public partial class Form1 : Form 
{ 
    NorthWindEntities dbContext = new NorthWindEntities(); 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     cbx_Categories.DataSource = dbContext.Categories.ToList(); 
     cbx_Categories.DisplayMember = "CategoryName"; 
     cbx_Categories.ValueMember = "CategoryID"; 
    } 

    private void cbx_Categories_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     int categoryID = Convert.ToInt16(cbx_Categories.SelectedValue); 
     PopulateProductsLbx(categoryID); 
    } 

    void PopulateProductsLbx(int categoryID) 
    { 
     var products = from p in dbContext.Products 
         where p.CategoryID == categoryID 
         select p.ProductName; 

     lbx_Products.DataSource = products.ToList(); 
    } 
} 

什麼是解決這個我最好的方法呢? 預先感謝您。

+0

請參閱http://stackoverflow.com/questions/6901070/getting-selected-value-of-a-combobox –

+0

@AllanWoods「ComboBoxItem」在WinForms中不可用 –

+0

您可以嘗試明確地說cbx_Categories.SelectedValue.ToString ()。 –

回答

0

你有沒有想過嘗試

INT的categoryID =((DataRowView的)cbx_Categories.SelectedItem).Row [ 「類別ID」];

這應該爲你處理鑄件。

+0

不好:不能將類型'object'隱式轉換爲'int'。存在明確的轉換(您是否缺少演員?) –