2013-04-10 36 views
1

我對EF非常陌生,並試圖使用ADO.NET EF在組合框更改事件上填充文本框上的數據。我試着解析所有的東西,但是一直存在錯誤。我的代碼在下面給出.... 請幫助我....在此先感謝。ADO.NET實體框架中的Casting錯誤4

private List<tSubDepartment> GetSubDepartmentInfo(int deptId) 
    { 
     using (DiagnosoftDataContext context = new DiagnosoftDataContext()) 
     { 
      return (from c in context.tSubDepartments 
        where c.dpCode == deptId 
        select c).ToList(); 
     } 
    } 

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     var subDeptInfo =GetDepartmentInfo((int)comboBox1.SelectedValue); // Error: "Specific cast is not valid" 
     textBox2.Text = subDeptInfo[0].sdCode.ToString(); 
     textBox3.Text = subDeptInfo[0].sdName; 
     textBox4.Text = subDeptInfo[0].dpCode.ToString(); 

    } 

這裏是我的代碼來填充組合框

private void Form1_Load(object sender, EventArgs e) 
    { 
     comboBox1.DataSource = GetSubDepartments(); 
     comboBox1.DisplayMember = "sdName"; 
     comboBox1.ValueMember = "sdCode"; 
    } 

private List<tSubDepartment> GetSubDepartments() 
    { 
     using (DiagnosoftDataContext context = new DiagnosoftDataContext()) 
     { 
      return (from c in context.tSubDepartments select c).ToList(); 

     } 
    } 
+0

我試圖ClickBright和喬·伊諾斯建議,但是它不工作尚未... – Jaan 2013-04-10 17:05:40

回答

0

看起來像它什麼都沒有做與EF。我的猜測是你的組合框中的值是字符串,而不是整數。所以,你可以嘗試

int.Parse(comboBox1.SelectedValue) 

代替

(int)comboBox1.SelectedValue 

如果不工作,那麼你可能已經得到了在有別的東西 - 來看看什麼樣的對象comboBox1.SelectedValue的是 - 它可以是任何東西。這就是你需要將它投射到,然後從那裏處理物體。

0

試試這個,

if (comboBox1.SelectedItem != null) 
      { 
       int x = int.Parse(comboBox1.SelectedItem.ToString()); 

       var subDeptInfo =GetDepartmentInfo(x); 
       textBox2.Text = subDeptInfo[0].sdCode.ToString(); 
       textBox3.Text = subDeptInfo[0].sdName; 
       textBox4.Text = subDeptInfo[0].dpCode.ToString(); 
      } 
      else { //Value is null }