[ mvasicdo @ 31.01.2007. 07:31 ] @
Moze li mi neko pomoci, kao sto pise u naslovu insert i delete mi radi a update nikako, a evo i kratak opis na koji nacin radim:
Imam jedan DataGridView koji je preko DataView povezan sa DataTable (dTZadatak). Na load forme dTZadatak se puni te se podaci prikazuju u dataGridView1.
Evo i djela koda koji koristim za snimanje izmjena:

Code:
DataTable table = dTZadatak.GetChanges();
                    dAdapter.Update(table);
                    dTZadatak.AcceptChanges();


Isto tako nisam zabaoravio:

Code:
OleDbCommandBuilder mySqlCommandBuilder = new OleDbCommandBuilder(dAdapter);


Ako moze neki primjer i najbolje rjesenje...
[ mvasicdo @ 31.01.2007. 07:43 ] @
Jos da dodam i koja mi je greska:

Code:
System.ArgumentNullExceptioin: Value cannot be null
Parametar name: dataTable
at System.Data.Common.DbDataAdapter.Update(DataTable dataTable)
[ aleksandarpopov @ 31.01.2007. 08:15 ] @
Hint: Koristi dataset.
Ova greška ti znači da nemaš promena u tvojoj datatabeli... znači getchanges ti vraća null.... verovatno nisi prosledio promene u datatabelu kako valja.... ajde postuj ceo kod, pa da vidimo šta ne valja.
Najbolje rešenje - zavisi od slučaja do slučaja.... (univerzalno rešenje ne postoji :))
A primera imaš na netu koliko hoćeš...
Pozdrav!
[ mvasicdo @ 31.01.2007. 08:41 ] @
Evo jos nesto sto sam zapazio:
Kada mjenjam sadrzaj rekorda u dataGridView1 na ovaj nacin:

Code:
dataGridView1.Rows[selRowIndex].Cells[2].Value = zadatak;
            dataGridView1.Rows[selRowIndex].Cells[7].Value = datum;
            dataGridView1.Rows[selRowIndex].Cells[8].Value = kljucnarijec;
            dataGridView1.Rows[selRowIndex].Cells[9].Value = zakljucak;


sve mi radi ok.
Medjutim u dataGridView1 imam jednu kolonu tipa CheckBox, i tu se javlja problem kada promjenim stanje CheckBox-a pa potom snimanje.

Prije GetChanged sam postavio i CurrencyManager:

Code:
CurrencyManager cm = (CurrencyManager)BindingContext[dView];
                cm.Position = 0;
[ aleksandarpopov @ 31.01.2007. 09:01 ] @
Ne koristim baš mnogo gridview pa ti ne mogu pomoći sa ovim... naćiće se neko već...
sorry, pozdrav!
[ mvasicdo @ 31.01.2007. 09:05 ] @
Rijesio sam na ovaj nacin:

Code:
if (e.ColumnIndex == 1)
            {
                bool checkedValue = (bool)dataGridView1.Rows[dataGridView1.CurrentCellAddress.Y].Cells[1].Value;
                dataGridView1.Rows[dataGridView1.CurrentCellAddress.Y].Cells[1].Value = !checkedValue;
                DocumentChanged = true;
            }


[ mvasicdo @ 31.01.2007. 09:06 ] @
Rijesio sam na ovaj nacin:

Code:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 1)
            {
                // Alternate the selected checked state of the current row.
                bool checkedValue = (bool)dataGridView1.Rows[dataGridView1.CurrentCellAddress.Y].Cells[1].Value;
                dataGridView1.Rows[dataGridView1.CurrentCellAddress.Y].Cells[1].Value = !checkedValue;
                DocumentChanged = true;
            }
        }