将Null值添加到绑定到ArrayList的ComboBox

时间:2013-01-17 21:26:43

标签: c# winforms oracle

我在这个问题上看到了一些类似的问题,但是它们似乎都没有成功。

我目前有一个方法用数据库查询中的项填充arraylist,然后返回用于填充ComboBox的arraylist。 ComboBox将用作其他数据库查询的搜索过滤器。

我想在arraylist中添加一个空值,以便允许用户在选择空值时“关闭过滤器”。

将null值添加到数组列表时会出现此问题。当我在添加数据库项之前添加空值时,所有项都不会显示在实际的ComboBox中。当我在填充ArrayList之后添加null值时,null值永远不会在ComboBox中显示为一行,但其他所有内容都在那里。

        public static ArrayList DropDown()
    {
        ArrayList status = new ArrayList();
        connect.Open();

        // Finds the stuff to use in the  COMBO BOX
        cmd.CommandText = String.Format("query");
        reader = cmd.ExecuteReader();

        while (reader.Read())
        {

            status.Add(String.Format("{0}", reader[BANK_ID]));
        }
        string holder = null;
        status.Add(holder); 
        connect.Close();
        return status;
    }

这导致填充的ComboBox,但没有空行。

        public static ArrayList DropDown()
    {
        ArrayList status = new ArrayList();
        string holder = null;
        status.Add(holder); 
        connect.Open();

        // Finds the stuff to use in the  COMBO BOX
        cmd.CommandText = String.Format("query");
        reader = cmd.ExecuteReader();
        ;
        while (reader.Read())
        {

            status.Add(String.Format("{0}", reader[BANK_ID]));
        }

        connect.Close();
        return status;
    }

这在组合框中没有任何结果。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

组合框的项目集合不能包含null。参考: http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.objectcollection.add.aspx

我假设设置DataSource正在内部检查,因此您注意到的行为(可能是一个更有见识的人可以确认这一点)

我建议你添加String.Empty,你可以一起摆脱arraylist并使用字符串数组/列表。

comboBox.Items.Insert(0, string.Empty);