我想控制SQL端的make EmployeeID等于组合框值,这样当我插入更新删除时,我直接按值控制项目。但是当我输入这一行时我收到错误。有谁知道为什么会这样?
注意:KennyZ找到了解决方案。谢谢你的帮助,KennyZ。
void comboboxrefresh()
{
cnn.Open();
SqlCommand cmd = new SqlCommand("SELECT EmployeeID,EmployeeFirstName,EmployeeLastName FROM Employees", cnn);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
comboBox1.Items.Insert(dr.GetString(1) + dr.GetString(2), dr.GetInt32(0));
}
}
cnn.Close();
}
答案 0 :(得分:2)
看起来您的参数是倒退的。
comboBox1.Items.Insert(dr.GetString(1) + dr.GetString(2), dr.GetInt32(0));
应该是
comboBox1.Items.Insert(dr.GetInt32(0), dr.GetString(1) + dr.GetString(2));
将来,请不要在相隔1小时的两个主题中提出相同的问题。
编辑:这不起作用,因为Items集合的长度可能为零。查看文档,Insert尝试插入集合中的特定位置。 http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.objectcollection.insert.aspx
试试这个:
comboBox1.Items.Add(dr.GetString(1) + dr.GetString(2));
答案 1 :(得分:0)
insert方法的整数参数指定了插入对象的索引,而不是与字符串关联的值。
所以,你需要的是:
public class cbItem
{
public string Name;
public int Value;
public cbItem(string name, int value)
{
Name = name; Value = value;
}
public override string ToString()
{
// Generates the text shown in the combo box
return Name;
}
}
然后你可以使用:
comboBox1.Items.Add(New cbItem(dr.GetString(1) + dr.GetString(2), dr.GetInt32(0)));