Добавить элемент списка в элемент управления списком - PullRequest
0 голосов
/ 02 декабря 2011

Я пытаюсь заполнить представление списка из таблицы данных, но когда я запускаю код, я получаю странную ошибку, которую не могу понять.

код:

        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)

Показывает правильное значение и не вызывает ошибку ....

Ответы [ 2 ]

1 голос
/ 02 декабря 2011

Нет ничего плохого в элементе listview; Я подозреваю, что ошибка в том, что одно из ваших имен полей в строке данных неверно.

0 голосов
/ 02 декабря 2011

Кажется, что одно из полей содержит нулевое значение как преобразование нулевых значений в ошибку String Throws.

Я не думаю, что 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);
        }
    }

Обратите внимание, что существует два разных нуля Один для .Net CLR это «ноль», а другой для базы данных «Syatem.DBNull.Value»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...