-4

SQL側のmake EmployeeIDをコンボボックスの値と等しくなるように制御したいので、update deleteを挿入すると、値で項目を直接制御します。ただし、この行を入力するとエラーが発生します。なぜこれが起こるのか誰にも分かりますか?

注: 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();
    }
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 時間間隔の 2 つのスレッドで同じ質問をしないでください。

編集: 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 に答える