【问题标题】:Add list view item to listview control将列表视图项添加到列表视图控件
【发布时间】:2011-12-02 08:47:11
【问题描述】:

我正在尝试从数据表中填充列表视图,但是当我运行代码时收到一个我无法弄清楚的奇怪错误。

代码:

        DataTable allTracks = tracks.getByMedia();

        for (int i = 0; i < allTracks.Rows.Count; i++) {
            DataRow r = allTracks.Rows[i];

            ListViewItem lvi = new ListViewItem();
            lvi.Text = r["track_number"].ToString();
            lvi.SubItems.Add(r["track_name"].ToString());

            lvTracks.Items.Add(lvi);
        }

错误:

  Object reference not set to an instance of an object.

程序认为 lvi 变量未设置或为空,但是当我进入调试模式时,我可以看到 lvi 已明确初始化并设置并且包含

right text + sub item . :S

如果我把这个代替

lvTracks.Items.Add(lvi);
 Messagebox.Show(lvi.Text)

显示正确的值,不会触发错误......

【问题讨论】:

  • 当你在调试代码时,究竟是在哪一行代码出现了这个错误?
  • 不确定是不是这样,但您可能想尝试一个 foreach 循环 - foreach (DataRow r in allTracks.Rows)。这将节省一些潜在的错误空间。
  • 我发现了错误,似乎 lvTracks 还没有初始化 :(dooo!代码正在运行;)

标签: c# winforms listview


【解决方案1】:

listviewitem 显然没有任何问题;我怀疑错误是您在数据行中的一个字段名称不正确。

【讨论】:

  • 我检查了,但所有字段名称都是正确的,没有字段为空或空。当我用这一行替换添加时: MessageBox.Show(r["track_number"].ToString() + " " + r["track_name"].ToString());它显示正确的数字+名称
【解决方案2】:

似乎其中一个字段包含一个空值,因为将空值转换为字符串引发错误。

我不认为 Listviewitem 在任何情况下都是空的,因为它在每次循环中都会被实例化

试试

DataTable allTracks = tracks.getByMedia();

    foreach(DataRow r in allTracks.Rows) {

        string track_number= r["track_number"]!=System.DBNull.Value?r["track_number"].ToString():"";
        string track_name=r["track_name"]!=System.DBNull.Value?r["track_name"].ToString():"";
        ListViewItem lvi = new ListViewItem();
        lvi.Text = track_number;
        lvi.SubItems.Add(track_name);
        if(lvTracks!=null)
        {
        lvTracks.Items.Add(lvi);
        }
    }

请注意,存在两个不同的 null 一个用于 .Net CLR 这是“null”,另一个用于数据库是“Syatem.DBNull.Value”

【讨论】:

  • 我试过这个,但它抛出了与以前相同的错误,我认为它们可能与 lvTracks 列表视图有误...
  • 您是否检查过您的 Listview 'lvTracks' 不为空? bcoz 向空对象添加任何内容都会引发错误。这可能很奇怪,但如果您的 Listview 是动态的,则可能会发生这种情况。尝试在 if(lvtrack!=null) 中编写代码
  • 是的,这是错误 (a),lvTracks 是由我忘记调用的函数动态创建的
猜你喜欢
  • 1970-01-01
  • 2020-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多