我在这个问题上看到了一些类似的问题,但是它们似乎都没有成功。
我目前有一个方法用数据库查询中的项填充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;
}
这在组合框中没有任何结果。
感谢您的帮助!
答案 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);