C# 如何使comboBox SelectedValue与SQL表ID相等
我想控制SQL端的makeEmployeeId等于combobox值,这样当我插入updatedelete时,我就可以通过它们的值直接控制项。然而,当我进入这一行时,我得到了错误。有人知道为什么会这样吗 注意:肯尼兹找到了解决方案。谢谢你的帮助,肯尼兹。C# 如何使comboBox SelectedValue与SQL表ID相等,c#,winforms,C#,Winforms,我想控制SQL端的makeEmployeeId等于combobox值,这样当我插入updatedelete时,我就可以通过它们的值直接控制项。然而,当我进入这一行时,我得到了错误。有人知道为什么会这样吗 注意:肯尼兹找到了解决方案。谢谢你的帮助,肯尼兹。 void comboboxrefresh() { cnn.Open(); SqlCommand cmd = new SqlCommand("SELECT EmployeeID,EmployeeFi
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();
}
看起来您的参数是反向的
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尝试在集合中的特定位置插入
试试这个:
comboBox1.Items.Add(dr.GetString(1) + dr.GetString(2));
insert方法的integer参数指定将插入对象的索引,而不是与字符串关联的值 因此,您需要的是:
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)));
你为什么要问两次这个问题?查看dupe-对我来说这似乎是正确的答案:将插入行修改为:comboBox1.Items.insert(dr.GetInt32(0),dr.GetString(1)+dr.GetString(2));这是您当前的首要答案。根据屏幕截图中的错误(“InvalidArgument=Value'1'对'index'无效”),您尝试在索引1=>处插入一个项,它假定索引0处已经有一个项。如果不是,则第一项应该位于索引0No,在这种情况下,您传递的值是comboboxItem的索引,而不是其他(请参阅)。史蒂夫在你上一个问题中的回答应该有效。如果你没有收到对你有帮助的答案,请编辑你的上一个问题,而不是创建一个精确的副本。@Janandersen更新。不过,你不应该每小时问两次同样的问题。如果你没有在一天内得到你想要的答案,一些活动来获得更多的关注是更合适的。