2014-11-25 2 views
0

У меня есть три комбинированных поля, которые фильтруют значение в разных таблицах. Для первых двух combo-box у меня нет проблем, но для третьего комбинированного ящика я получил сообщение об ошибке input strings was not in correct format. Я использую тот же код для двух других, и он работает правильно. Может ли кто-нибудь указать, как устранить эту проблему?Фильтрация combobox с другим значением combobox

Вот мой код: -

Это один для комбобокса два, которые работали отлично: -

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() 'является целой строкой или нет. –

+0

Что из cbPier состоит из? –

ответ

0

Проверьте, может ли это быть преобразовано в целое, как это первый:

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.DisplayMember и cbPier.ValueMember? Является ли член diplay элементом string и value int? Двойная проверка, если это так ...

+0

Привет Милен, я попробовал оба метода. Первый метод - это не отображаемая ошибка, но поле со списком пусто. Другой метод имеет ту же ошибку. – Momento

+0

Проверьте свойства DisplayMember и ValueMember для вашего поля со списком – Milen

Смежные вопросы