Void Dataset, почему? - PullRequest
       1

Void Dataset, почему?

0 голосов
/ 18 декабря 2009

есть проблема здесь. Надеюсь, вы можете помочь: D

Программное обеспечение, которое я создаю, управляет простой информацией о фильмах, эта форма, в частности, должна редактировать данные данного фильма. С помощью приведенного ниже кода форма заполняется данными, собранными из БД. («Кино» - это глобально объявленный набор данных).

public short popolaModificaFilm(string titolo, ref TextBox txtAnno, ref TextBox txtCast, ref TextBox txtDurata, ref TextBox txtLocandina, ref TextBox txtRegista, ref TextBox txtTitolo, ref TextBox txtTrailer, ref TextBox txtTrama, ref ComboBox cmbGenere, ref ComboBox cmbNaz, ref CheckBox chkPellicola, ref CheckBox chkDigitale, ref CheckBox chk3d)
    {
        service.ricercaFilm(titolo).CopyToDataTable(cinema.film, LoadOption.PreserveChanges);
        dsCinema.filmRow film = cinema.film[0];
        txtAnno.Text = film["anno"].ToString().Trim();
        txtCast.Text = film["cast"].ToString().Trim();
        txtDurata.Text = film["durata"].ToString().Trim();
        txtLocandina.Text = film["locandina"].ToString().Trim();
        txtRegista.Text = film["regista"].ToString().Trim();
        txtTitolo.Text = film["titolo"].ToString().Trim();
        txtTrailer.Text = film["trailer"].ToString().Trim();
        txtTrama.Text = film["trama"].ToString().Trim();
        inserisciFilmCombo(ref cmbGenere,ref cmbNaz);
        cmbGenere.SelectedValue = film["genere"];
        cmbNaz.SelectedValue = film["nazionalita"];
        if ((bool)film["pellicola"])
        {
            chkPellicola.Checked = true;
        }
        if ((bool)film["digitale"])
        {
            chkDigitale.Checked = true;
        }
        if ((bool)film["tridimensionale"])
        {
            chk3d.Checked = true;
        }
        return short.Parse(film["id"].ToString());
    }

Через другую кнопку пользователь может обновить (в наборе данных) информацию. Это метод:

        public void aggiornaFilm(short id, string titolo, string regista, string cast, int anno, int durata, string trama, string trailer, string genere, string nazionalita, string locandina, bool pellicola, bool digitale, bool tridimensionale)
    {
        dsCinema.filmRow film = cinema.film.FindByid(id);
        if (!titolo.Equals(""))
        { film["titolo"] = titolo; }
        if (!regista.Equals(""))
        { film["regista"] = regista; }
        if (!cast.Equals(""))
        { film["cast"] = cast; }
        if (!trama.Equals(""))
        { film["trama"] = trama; }
        if (!trailer.Equals(""))
        { film["trailer"] = trailer; }
        if (!genere.Equals(""))
        { film["genere"] = genere; }
        if (!locandina.Equals(""))
        { film["locandina"] = locandina; }
        if (!anno.ToString().Equals(""))
        { film["anno"] = anno; }
        if (!nazionalita.Equals(""))
        { film["nazionalita"] = nazionalita; }
        if (!durata.ToString().Equals(""))
        { film["durata"] = durata; }
        film["pellicola"] = pellicola;
        film["digitale"] = digitale;
        film["tridimensionale"] = tridimensionale;
    }

Когда я пытаюсь использовать эти функции, Visul Studio выплевывает следующее исключение:

System.NullReferenceException не обрабатывается Message = "Ссылка на объект не установлена ​​на экземпляр объекта." Источник = "BusinessLogicalLayer"

Я заметил, что набор данных (в начале "aggiornaFilm") пуст (поэтому очевидно, что метод find возвращает ноль), несмотря на то, что я ввел данные через "popolaModificaFilm". Оба метода (aggiornaFilm & popolaModificaFilm) находятся в одном классе и вызываются в одной и той же форме.

Tnx за любую помощь, извините за мой плохой английский.

Ответы [ 2 ]

0 голосов
/ 18 декабря 2009

пусто или пусто? это кино ноль?

Вы получаете доступ к чему-либо (используя оператор точки), но левая сторона точки равна нулю - отсюда и исключение.

Пройдите по коду, чтобы найти точную строку, которая выдает исключение, и посмотрите, что не так.

(даже если не в этом классе, а в службе, которую вы вызываете) - отладчик здесь ваш друг

0 голосов
/ 18 декабря 2009

Похоже, ваш сервисный объект не возвращает данные правильно. Вам следует убедиться, что службы работают правильно.

...