-4

我想控制 SQL 端的 make EmployeeID 等于组合框的值,这样当我插入更新删除时,我直接通过它们的值来控制项目。但是,当我输入此行时出现错误。有谁知道为什么会这样?

注意: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();
    }
4

2 回答 2

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));
于 2013-09-27T20:36:52.637 回答
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)));
于 2013-09-27T20:38:38.253 回答