2017-06-06 67 views
0

我遇到了問題comboBoxContainer。雖然comboBoxategorycomboBoxMarket已填滿,但未填充comboBoxContainer
selected.Container有正確的變量,但組合框沒有得到這個變量。C#Linq - 未裝滿Combobox

private void listBoxProducts_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    try 
    { 
     ProductList_Variables selected = ProductList_Variables)listBoxProducts.SelectedItem; 

     textBoxProduct.Text = selected.Product; 
     comboBoxCategory.SelectedItem = selected.Category; 
     comboBoxMarket.SelectedItem = selected.Market; 
     comboBoxContainer.SelectedItem = selected.Container; 
     textBoxPrice1.Text = selected.Price.ToString(); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 
class ProductList_Variables 
{ 
    public int Id { get; set; } 
    public string Product { get; set; } 
    public string Category { get; set; } 
    public string Size { get; set; } 
    public string Market { get; set; } 
    public string ProductName { get { return Product + " - " + Category + " - Size: " + Size +", Market: "+ Market; } } 
    public string Flavour { get; set; } 
    public decimal Price { get; set; } 
    public string Container { get; set; } 
    public int IdContainer { get; set; } 


} 
void Fillcombo()// is filling the combobox 
{ 
    try 
    { 
     using (var db = new GelatoProjectDBEntities()) 
     { 
      var products = (from x in db.ProductsLists 
          select new ProductList_Variables { Id = x.Id, Product = x.Product, Category = x.Category, Size = x.Size, Market = x.Market, Container=x.Container, Price=x.Price, IdContainer=x.IdContainer } 
          ).OrderBy(c => c.Product).ToArray(); 
      listBoxProducts.Items.AddRange(products); 
      listBoxProducts.DisplayMember = "ProductName"; 
      listBoxProducts.ValueMember = "Id"; 
      var goods = (from x in db.Goods 
         select new ProductList_Variables { Id = x.Id, Product=x.item, Container = x.item} 
         ).OrderBy(c => c.Product).ToArray(); 

      comboBoxContainer.Items.AddRange(goods); 
      comboBoxContainer.DisplayMember = "Product"; 
      comboBoxContainer.ValueMember = "Id"; 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
    } 
+0

'selected.Container'的類型和值是什麼,'comboBoxContainer'的數據是什麼?如果它不是簡單的項目(如'int' /'string'),它們是否都來自同一個源? – nvoigt

+0

您可以向我們展示'ProductList_Variables'實現以及如何填充'comboBoxContainer'? –

+0

@RolandBär和nvoigt,更新了您的問題 – Mirko

回答

0

看起來你的comboBoxContainer是用對象填充的,而不是用字符串,所以當你賦值的時候應該匹配對象。

嘗試更換您的線路

 comboBoxContainer.SelectedItem = selected.Container; 

如下

 comboBoxContainer.SelectedItem = 
      comboBoxContainer.Items.OfType<ProductList_Variables>().SingleOrDefault(x => x.Container == selected.Container); 
0

當你的財產容器包含的值(comboBoxContainer的數據元素的屬性Id),您可以使用

comboBoxContainer.SelectedValue = selected.Container;