如何使comboBox SelectedValue与SQL表ID相等

时间:2013-09-27 20:27:58

标签: c# winforms

我想控制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();
    }

2 个答案:

答案 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)));