C# 使用另一个combobox值筛选combobox
我有三个组合框,用于过滤不同表中的值。对于前两个组合框,我没有问题,但对于第三个组合框,我得到错误显示输入字符串的格式不正确。我对另外两个使用相同的代码,它工作正常。有人可以指定如何解决此问题吗 这是我的代码:- 这一个用于组合框2,它工作得非常好:-C# 使用另一个combobox值筛选combobox,c#,sql,winforms,combobox,C#,Sql,Winforms,Combobox,我有三个组合框,用于过滤不同表中的值。对于前两个组合框,我没有问题,但对于第三个组合框,我得到错误显示输入字符串的格式不正确。我对另外两个使用相同的代码,它工作正常。有人可以指定如何解决此问题吗 这是我的代码:- 这一个用于组合框2,它工作得非常好:- private void cbBridge_SelectedIndexChanged(object sender, EventArgs e) { if (cbBridge.SelectedValue.ToString() != null)
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);
}
}
我希望有人能告诉我如何纠正这个问题。谢谢
***更新****
这里是完整的代码
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);
}
}
检查是否可以先将其转换为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.DisplayMember和cbPier.ValueMember?diplay成员是字符串,value成员是int吗?首先仔细检查是否是这种情况…调试并测试-`cbPier.SelectedValue.ToString'是否为整数字符串。cbPier由什么组成?嗨,米伦,我尝试了这两种方法。第一个方法没有显示错误,但组合框为空。另一个方法是具有相同错误。请检查组合框的DisplayMember和ValueMember属性