如何使用selectedindexchanged方法访问数据库

时间:2013-11-04 16:28:48

标签: c# asp.net .net

我在另一个类中访问了一个数据源。我使用此数据源在页面加载事件上填充我的组合框。我已经到了我的方法从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;
        }

我是新手使用类进行数据库访问我总是使用向导进行教学。有没有更好的方法将这些信息存入我的领域,或者我只是在某处丢失了某些东西?谢谢您的帮助。如果您需要澄清,请告诉我!

1 个答案:

答案 0 :(得分:1)

如果此处FormatIDnull,您将收到此错误。无法针对ToString()引用执行null方法。

cmboBoxPreviousVersion.Items.Add(l.FormatID.ToString() + " - " + l.FormatName);

这可能不是你想要的,而是为了保护代码:

cmboBoxPreviousVersion.Items.Add(
    string.Format("{0} - {1}", l.FormatID, l.FormatName));

但是,您还需要在此处研究FormatIDnull的原因。