-1

对不起我的新问题,但我有问题:我想添加带有数据绑定的组合框项目,但请参阅 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

4 回答 4

0

很难用你提供的东西来判断。设置断点并查看您的 DataSet 中是否有数据。如果是这样,DisplayMember 拼写是否正确,还是 Table 拼写正确?我注意到它们非常相似,但有一个字母。检查该表是否存在(将其设置为 Watch 或 Hover over it)。更多信息会有所帮助。

于 2012-05-25T16:02:52.737 回答
0

您似乎缺少以下行:

comboBox1.DataBind();
于 2012-05-29T10:32:30.897 回答
0

我敢打赌,无论出于何种原因,DataSet 中都没有名为“Kategorii”的表,当您尝试访问DefaultView. 检查您的 xml,并在调试条件下检查 DataSet 中实际存在哪些表。

如果您向我们提供此异常的堆栈跟踪信息以及可能的 xml 文件样本,将会很有帮助。

另一种猜测是它comboBox1本身是空的?

加分
我只是想检查您是否故意不在ValueMember组合框上进行设置,或者只是在此示例代码中省略了它。

于 2012-05-25T16:03:13.067 回答
0

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

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

这意味着您的数据集中没有名为“Kategorii”的表

试试这个

DataTable dt = ds.Tables["Kategorii"];
if(dt == null)
    throw new Exception("There is no datatable Kategorii");
else
    comboBox1.DataSource = dt;
于 2012-05-25T16:03:19.100 回答