Odświeżanie zawartości DGV.

0

Witam,
W jaki sposób odświeżyć zawartość DataGridView?
Napisałem coś takiego:

string connString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\\..\\ewidencja.mdb";
                OleDbConnection conn = new OleDbConnection(connString);
                string query = "INSERT INTO temp (oddzial, strefa, ludzie, data, godzina, nazwisko, telefon, typ) VALUES (@oddzial, @strefa, @ludzie, @data, @godzina, @nazwisko, @telefon, @typ)";
                OleDbCommand cmd = new OleDbCommand(query, conn);
                cmd.Parameters.Add("@oddzial", OleDbType.LongVarChar).Value = this.textBox1.Text.Trim();
                cmd.Parameters.Add("@strefa", OleDbType.LongVarChar).Value = this.textBox2.Text.Trim();
                cmd.Parameters.Add("@ludzie", OleDbType.Numeric).Value = Convert.ToDecimal(this.textBox3.Text.Trim());
                cmd.Parameters.Add("@data", OleDbType.Date).Value = DateTime.Now.ToShortDateString();
                cmd.Parameters.Add("@godzina", OleDbType.VarChar).Value = this.textBox4.Text.Trim();
                cmd.Parameters.Add("@nazwisko", OleDbType.LongVarChar).Value = this.textBox5.Text.Trim();
                cmd.Parameters.Add("@telefon", OleDbType.LongVarChar).Value = this.textBox6.Text.Trim();
                if (znw.Checked)
                    cmd.Parameters.Add("@typ", OleDbType.Char).Value = 'n';
                else
                    cmd.Parameters.Add("@typ", OleDbType.Char).Value = 'w';
                try
                {
                    conn.Open();
                    cmd.ExecuteNonQuery();
                    conn.Close();
                    this.tempTableAdapter.Fill(this.ewidencjaDataSet.temp);
                    (...)
                 }

Udało mi się to odświeżyć dodając :

                    this.tempTableAdapter.Insert(oddzial, strefa, ludzie, DateTime.Now, godzina, nazwisko, telefon, typ_);
                    this.tempTableAdapter.Update(ewidencjaDataSet.temp);

Czy ktoś może mi pomóc? Bo przy użyciu tempTableAdapter.Update() lub tempTableAdapter.Delete()
nie da rady tego zrealizować.

0

okresl, co rozumiesz przez "odświeżyć"
jeżeli masz problem z tym, ze :Fill ciagle zwraca te same dane, to tak sie moze dziac np jesli ciagle uzywasz tego samego DataAdapter - one cache'uja dane.

0

Może nakreślę czym dysponuję.
Używam kreatorów z VS2008, korzystam z bazy wcześniej utworzonej w access'ie.
Przy pomocy kreatora utworzyłem jeden DataSet (ewidencjaDataSet) który zawieraz trzy DataTable (w bazie są 3 tabele). Następnie na formatce mam DataGridView, przy połączeniu Grida z tabelami kreator utworzył TableAdapter i BindingSource (tempTableadapter, tempBindingSource).
Dodawanie nowych rekordów jest realizowane w sposób przedstawiony w pierwszy poście. Po dodaniu nowego rekordu do bazy nie potrafię odświeżyć danych które są widoczne w DataGridView.
Próbowałem z Fill() dla adaptera tabeli, próbowałem resetować DataSet, BindingSource wszystko bez efektu i być może nieudolnie. Może macie jakieś sugestie i/lub jakiś prosty przykład obrazujący rozwiązanie mojego problemu?

0

powtórzę: adapter.FILL CACHE'UJE dane sciagniete z bazy. mozesz sobie FILL wywolywac i pięćdziesiąt razy, a będziesz dostawał listę starą.

albo wykonaj inserta NIEręcznie, tylko poprzez DataSet i jego bodajże tabela.Update(), tak żeby cache dowiedział się o zmianie

albo s'purge'uj cache, niech się ściagnie 'na czysto'..

1 użytkowników online, w tym zalogowanych: 0, gości: 1