对不起我的新问题,但我有问题: 我想使用数据绑定添加组合框项目,但是请参阅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,但我在此表中有项目。为什么以及如何解决它?
答案 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();