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

C# 如何使用selectedindexchanged方法访问数据库,c#,asp.net,.net,C#,Asp.net,.net,我在另一个类中访问了一个数据源。我使用此数据源填充页面加载事件上的组合框。我已经到了我的方法通过selectedindexchanged事件访问数据库的地步。它给了我一个错误:对象引用未设置为对象的实例。我使用断点来查看失败的地方。令我惊讶的是,它正在收集第一行数据(不是我选择的数据),然后它经过breakpoit并给出错误消息。既然它之前就有数据,为什么要这么做? 我的组合框填充方法 try { List<PreviousVersionData&g

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

我不熟悉使用类来访问数据库,我总是通过向导来学习。是否有更好的方法将这些信息输入我的领域,或者我只是在某个地方遗漏了什么?谢谢你的帮助。如果你需要澄清,请告诉我

如果
FormatID
在此处为
null
,则会出现此错误。无法对
null
引用执行
ToString()
方法

cmboBoxPreviousVersion.Items.Add(l.FormatID.ToString() + " - " + l.FormatName);
这可能不是您想要的,但为了保护代码:

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

但是,您还需要研究为什么
FormatID
在这里是
null

您将字符串放入组合框中,然后使用一个这样的字符串从数据库中检索数据。使用一个键不是更符合逻辑吗?除此之外,您正在实例化数据,只是为了用pvdata.getDataById()覆盖它。这似乎没什么必要:)错误似乎来自于我忽略了数据这一事实,这意味着您在数据库中找不到任何键等于某个连接字符串的内容。这似乎并不奇怪。也就是说,我不知道项目是什么,它也可能是空的:)trace getdatabyd。数据似乎为空。如果要从getDataByID获取新数据,则没有理由创建新数据。为什么要使用PreviousVersionData类来获取DataById,而不是静态方法?@oerkelens这是什么意思?所以省略pvdata.getetc?我的意思是getDataByID似乎是通过ID检索一个项。但您向它传递的字符串不仅是ID,而且是包含键和名称(以及破折号)的串联字符串。您可能希望用键值对填充组合框,显示值,然后使用键值再次查找数据。@nepistheone我明白为什么这里为空,但我不知道如何更正it@CharmingInferno,问题出现在
PreviousVersionData.getDatabase
中。您需要调试该代码,并找出
FormatID
获取
null
值的原因。
cmboBoxPreviousVersion.Items.Add(
    string.Format("{0} - {1}", l.FormatID, l.FormatName));