2014-11-25 96 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

相关问题