2012-08-31 38 views
0

使用組合框工作簡單實體框架工作示例。我試圖填充組合框中選擇的基礎上的DataGridView但我得到鑄造錯誤實體框架:使用Combox選擇,獲取Casting錯誤

我有簡單的MDF數據庫,我使用的數據庫首先生成EF模型。 在EF,NiftyFO是一個模型由TradId,StrikePrice,VolumeTraded等..

 NiftyEntities nf = new NiftyEntities(); 
     NiftyFO nfo = new NiftyFO(); 

     nfo = (NiftyFO)(comboBox1.SelectedItem); 

     var result = from x in nf.NiftyFOes 
        where x.StrikePrice ==nfo.StrikePrice 
        select x; 
     dataGridView1.DataSource = result; 
     dataGridView1.Refresh(); 

以及確切的錯誤它顯示wheni變化的ComboBox Seletion是

Unable to cast object of type '<>f__AnonymousType0`1[System.Nullable`1[System.Decimal]] 
    to type 'agileLocal.NiftyFO.' 

組合框充滿罷工價格,並從數據庫throgh加載的ef和代碼是這樣的

   NiftyEntities nf = new NiftyEntities(); 
      var result2 = from x in nf.NiftyFOes 
          select new { x.StrikePrice }; 
      //comboBox1.DisplayMember = "StrikePrice"; 
      comboBox1.DataSource = result2; 

解決:

select new { x.StrikePrice }; 

我只是改變這一行

select x.StrikePrice。它的工作。

+0

,因爲這個問題是' nfs =(NiftyFO)(comboBox1.SelectedItem);',並且不需要'new NiftyFO();' – S3ddi9

+0

SéddikLaraba,我剛剛添加了我採用的方法來加載組合框..請再次閱讀發佈 – Vishwa

回答

1

那麼你的代碼將

decimal myselected = (decimal)(comboBox1.SelectedItem); 


var result = from x in nf.NiftyFOes 
       where x.StrikePrice == myselected 
       select x; 
    dataGridView1.DataSource = result; 
    dataGridView1.Refresh(); 

因爲在你select new { x.StrikePrice };您選擇的StrikePrice,而不是我們應該知道你是怎麼填寫您的組合框的對象時,它自

+0

如果StrikePrice是您可以將其轉換爲'decimal?' – S3ddi9

+0

Larba in selected Item it showing像這個「{StrikePrice = 4500}」並獲得具體的鑄造是無效的,任何想法? – Vishwa

+0

謝謝您的輸入 – Vishwa