任何人都请帮忙......
错误 -
输入字符串的格式不正确。
int comboxchoice = Int32.Parse(comboBox1.SelectedValue.ToString());
我正在使用以下代码
private void Form2_Load(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(@"Data Source=MANISH-PC\SQLEXPRESS;Initial Catalog=test2.mdf;Integrated Security=True");
conn.Open();
SqlCommand command = new SqlCommand("select * from table1", conn);
SqlDataAdapter adp = new SqlDataAdapter(command);
tbl = new DataTable();
adp.Fill(tbl);
comboBox1.DataSource = tbl;
comboBox1.ValueMember = tbl.Columns[0].ColumnName;
comboBox1.DisplayMember = tbl.Columns[0].ColumnName;
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(@"Data Source=MANISH-PC\SQLEXPRESS;Initial Catalog=test2.mdf;Integrated Security=True");
conn.Open();
SqlCommand command = new SqlCommand("select name from table1 where id=@id", conn);
int comboxchoice = Int32.Parse(comboBox1.SelectedValue.ToString());
command.Parameters.AddWithValue("@id",comboxchoice);
SqlDataAdapter adp = new SqlDataAdapter(command);
DataSet ds = new DataSet();
adp.Fill(ds, "table1");
textBox1.Text = ds.Tables["table1"].Rows[0]["name"].ToString();
}
}
答案 0 :(得分:1)
我无法确定您需要哪种方法,但您收到的错误是因为SelectedValue
正在返回DataView
(根据您的评论)。
根据DataView
的{{3}},在ToString下,
返回包含Component
名称的String
首先,您可以尝试投射
(DataView)comboBox.SelectedValue
但是这应该包括额外的错误处理,以确保SelectedValue是一个有效的DataView。
作为旁注,您还可以通过更好的数字解析来避免这种情况
int comboChoice;
if(int.TryParse((DataView)comboBox.SelectedValue, out comboChoice))
//Do something
else
//Number invalid, do something else
答案 1 :(得分:0)
因为comboBox1.SelectedValue
没有返回正确的整数值。
您成功将comboBox1.SelectedValue
更改为字符串,但字符串无法转换为相应的整数,因为它不是整数。
例如,以下语句触发相同的错误
//non-integer
string omg = "2313asd";
int convertedINT = Int32.Parse(omg.ToString());
从@Vignesh Kumar获取想法,空字符串也无法识别为整数格式。
//empty string
string omg = "";
int convertedINT = Int32.Parse(omg.ToString());
如果您确认只有空字符串会触发您的错误,那么只检查string.IsNullOrEmpty()
如果您想消除错误完全,请使用comboBox1.SelectedValue
确认您的Int32.TryParse()
是正确的整数格式。
int comboxchoice;
if (Int32.TryParse(comboBox1.SelectedValue.ToString(), out comboxchoice))
{
proceed by using comboxchoice as converted int value
}
else
{
//not integer value.....
}
或者也许你可以显示字符串,可以检查它是否是你想象的整数值
MessageBox.Show(comboBox1.SelectedValue.ToString());
答案 2 :(得分:-1)
你不能摆脱“ToString()”。我相信“SelectedValue”本身就是一个字符串值。