есть проблема здесь. Надеюсь, вы можете помочь: 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 за любую помощь, извините за мой плохой английский.