2014-11-25 119 views
0

我有三個組合框,它在不同的表中過濾值。對於前兩個組合框我沒有問題,但對於第三個組合框,我得到了錯誤顯示input strings was not in correct format。我爲其他兩個使用相同的代碼,它工作正常。有人可以指定如何解決這個問題?用另一個組合框過濾組合框

這裏我的代碼: -

這一個是組合框其中兩個完美工作: -

private void cbBridge_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (cbBridge.SelectedValue.ToString() != null) 
    { 
     int BridgeID = Convert.ToInt32(cbBridge.SelectedValue.ToString()); 
     FillPier(BridgeID); 
    } 
} 

這是顯示錯誤代碼

private void cbPier_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (cbPier.SelectedValue.ToString() != null) 
    { 
     int PierID = Convert.ToInt32(cbPier.SelectedValue.ToString()); 
     FillDataPoint(PierID); 
    } 
} 

我希望有人可以顯示我如何糾正這個問題。謝謝。

*** UPDATE ****

這裏的全部代碼

private void FillPier(int BridgeID) 
    { 
     SqlConnection con = new SqlConnection(conString); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = con; 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText = "SELECT PierID, PierName, BridgeID FROM tbPier WHERE BridgeID = @BridgeID"; 
     cmd.Parameters.AddWithValue("@BridgeID", BridgeID); 
     DataSet objDs = new DataSet(); 
     SqlDataAdapter dAdapter = new SqlDataAdapter(); 
     dAdapter.SelectCommand = cmd; 
     con.Open(); 
     dAdapter.Fill(objDs); 
     con.Close(); 
     if (objDs.Tables[0].Rows.Count > 0) 
     { 
      cbPier.DataSource = objDs.Tables[0]; 
      cbPier.DisplayMember = "PierName"; 
      cbPier.ValueMember = "PierID"; 

     } 

    } 

    private void FillDataPoint(int PierDP) 
    { 
     SqlConnection con = new SqlConnection(conString); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = con; 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText = "SELECT PierID, InspectDate FROM tbDatapoint WHERE PierID = @PierID"; 
     cmd.Parameters.AddWithValue("@PierID", PierDP); 
     DataSet objDs = new DataSet(); 
     SqlDataAdapter dAdapter = new SqlDataAdapter(); 
     dAdapter.SelectCommand = cmd; 
     con.Open(); 
     dAdapter.Fill(objDs); 
     con.Close(); 
     if (objDs.Tables[0].Rows.Count > 0) 
     { 
      cbInspect.DataSource = objDs.Tables[0]; 
      cbInspect.DisplayMember = "InspectDate"; 
      cbInspect.ValueMember = "PierID"; 
     } 

    } 

    private void ViewBridge_Load(object sender, EventArgs e) 
    { 
     FillBridge();    

    } 

    private void cbBridge_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (cbBridge.SelectedValue.ToString() != null) 
     { 
      int BridgeID = Convert.ToInt32(cbBridge.SelectedValue.ToString()); 
      FillPier(BridgeID); 
     } 
    } 


    private void cbPier_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (cbPier.SelectedIndex != 1) 
     { 
      int PierDP = Convert.ToInt32(cbPier.SelectedValue.ToString()); 
      FillDataPoint(PierDP); 
     } 
    } 
+0

調試並測試 - 「cbPier.SelectedValue.ToString()」是否爲整數字符串。 – 2014-11-25 09:20:43

+0

cbPier由什麼組成? – 2014-11-25 09:24:12

回答

0

檢查,如果這可以轉換首先爲int這樣的:

int x = 0 
private void cbPier_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (Int32.TryParse(cbPier.SelectedValue.ToString(), out x)) 
    { 
     int PierID = Convert.ToInt32(cbPier.SelectedValue.ToString()); 
     FillDataPoint(PierID); 
    } 
} 

或者使用SelectedIndex物業編號:

if(cbPier.SelectedIndex != -1) 
{ 
    ..... 
} 

什麼是cbPier.DisplayMembercbPier.ValueMember? diplay成員的字符串和值成員int?仔細檢查一下是否是這種情況...

+0

嗨米倫,我試過這兩種方法。第一種方法它沒有顯示錯誤,但組合框是空白的。另一種方法有相同的錯誤。 – Momento 2014-11-25 09:35:28

+0

檢查組合框的「DisplayMember」和「ValueMember」屬性 – Milen 2014-11-25 10:00:47

相關問題