无法数据绑定组合框

时间:2012-05-25 15:58:06

标签: c# .net winforms

对不起我的新问题,但我有问题: 我想使用数据绑定添加组合框项目,但是请参阅NullException(“对象引用未设置为对象的实例。”),但我在表中有数据。这是我的代码:

BesenicaDataSet ds = new BesenicaDataSet();
ds.ReadXml("BesenicaDS.xml");
comboBox1.DataSource = ds.Tables["Kategorii"].DefaultView;
comboBox1.DisplayMember = "Kategoriq";

更新:

现在,我用它修复它并且无法获得异常

comboBox1 = new ComboBox(); 
comboBox1.DataSource = ds.Tables["Kategorii"].DefaultView; 
comboBox1.DisplayMember = "Kategoriq"; //second column in table 
comboBox1.ValueMember = "KategoriqID"; //Primary Key column 

但现在ComboBox1.Items.Count == 0,但我在此表中有项目。为什么以及如何解决它?

4 个答案:

答案 0 :(得分:0)

很难说出你提供的内容。设置一个断点,看看你的DataSet中是否有数据。如果是这样,DisplayMember拼写是正确的,还是表格?我注意到他们非常相似,但是写了一封信。检查该表是否存在(将其设置为Watch或将鼠标悬停在其上)。更多信息会有所帮助。

答案 1 :(得分:0)

我打赌无论出于何种原因,DataSet中没有名为“Kategorii”的表,当您尝试访问DefaultView时会导致空引用异常。检查你的xml,并在调试条件下检查DataSet中实际存在哪些表。

如果您为此异常提供了堆栈跟踪,并且可能是您的xml文件的样本,那将会很有帮助。

另一个猜测是comboBox1本身是空的吗?

奖励积分
我只是想检查你是故意不在组合框上设置ValueMember,或者只是从这个示例代码中省略它。

答案 2 :(得分:0)

从给出的小代码中,假设文件xml存在且有效,那么唯一可能的原因是

comboBox1.DataSource = ds.Tables["Kategorii"].DefaultView; 

意味着您的DataSet中没有名为“Kategorii”的表

试试这个

DataTable dt = ds.Tables["Kategorii"];
if(dt == null)
    throw new Exception("There is no datatable Kategorii");
else
    comboBox1.DataSource = dt;

答案 3 :(得分:0)

您似乎缺少以下一行:

comboBox1.DataBind();