我在另一个类中访问了一个数据源。我使用此数据源在页面加载事件上填充我的组合框。我已经到了我的方法从selectedindexchanged事件访问数据库的地步。它给了我错误:对象引用未设置为对象的实例。我使用断点来查看失败的地方。令我惊讶的是它收集了第一行数据(不是我选择的那一行),然后它超过了breakpoit并给了我错误信息。为什么这样做,因为之前有数据? 我的组合框填充方法
try
{
List<PreviousVersionData> listID = PreviousVersionData.getDatabase();
if (listID != null)
{
foreach (PreviousVersionData l in listID)
{
cmboBoxPreviousVersion.Items.Add(l.FormatID.ToString() + " - " + l.FormatName);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
这就是问题所在,它给出了我在Item.FormatID = data.FormatID;
上设置的断点的错误if (cmboBoxPreviousVersion.SelectedItem != null)
{
PreviousVersionData data = new PreviousVersionData();
PreviousVersionData pvdata = new PreviousVersionData();
data = pvdata.getDataByID(cmboBoxPreviousVersion.SelectedItem.ToString());
Item.FormatID = data.FormatID;
Item.FormatName = data.FormatName;
Item.FormatDescription = data.FormatDescription;
Item.StockID = data.StockID;
Item.PrintPlantCode = (bool)data.PrintPlantCode;
Item.PrintWeight = (bool)data.PrintWeight;
Item.PrintPrice = (bool)data.PrintPrice;
rChkBoxPlantCode.Checked = Item.PrintPlantCode;
rChkBoxPrintPrice.Checked = Item.PrintPrice;
rChkBoxWeight.Checked = Item.PrintWeight;
cmboBoxStock.Items.Add(Item.StockID);
rTxtBoxDescription.Text = Item.FormatDescription;
}
我是新手使用类进行数据库访问我总是使用向导进行教学。有没有更好的方法将这些信息存入我的领域,或者我只是在某处丢失了某些东西?谢谢您的帮助。如果您需要澄清,请告诉我!
答案 0 :(得分:1)
如果此处FormatID
为null
,您将收到此错误。无法针对ToString()
引用执行null
方法。
cmboBoxPreviousVersion.Items.Add(l.FormatID.ToString() + " - " + l.FormatName);
这可能不是你想要的,而是为了保护代码:
cmboBoxPreviousVersion.Items.Add(
string.Format("{0} - {1}", l.FormatID, l.FormatName));
但是,您还需要在此处研究FormatID
为null
的原因。