C# datagridview automatikus frissítés

Címkék
C# datagridview automatikus frissítés
2022-10-26T18:13:19+02:00
2022-10-28T12:18:44+02:00
2022-11-24T12:01:10+01:00
Pharmasoft
Szervusztok
Hol lehet a hiba?

c# .net 4.8, MsSql

Datagridview-ba beteszem a táblát

private void Form1_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the 'nN_DATADataSet.GYNEV' table. You can move, or remove it, as needed. this.gYNEVTableAdapter.Fill(this.nN_DATADataSet.GYNEV); }



Szerkesztem  bármely cella értékét, ha gombnyomásra update-elek hibátlan, minden módosítás bemegy a táblába:

//ez hibátlanul átvisz minden változtatást private void button1_Click(object sender, EventArgs e) { gYNEVTableAdapter.Update(nN_DATADataSet.GYNEV); gYNEVTableAdapter.Fill(nN_DATADataSet.GYNEV); }


Ha CellValueChanged-re updatelnék, hibaüzenet nélkül semmit módosít.
Minden cella érték változásnál ideér, a cella aktuális értéke debug-gal, már a módosított, mégsem változik semmi.

//ez meg semmit. Minden cella érték változásnál ideér, de az alatta lévő táblában semmit sem módosít private void dgw_CellValueChanged(object sender, DataGridViewCellEventArgs e) { try { gYNEVTableAdapter.Update(nN_DATADataSet.GYNEV); gYNEVTableAdapter.Fill(nN_DATADataSet.GYNEV); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
Ha CellEndEdit-re teszem rá, módosít, de csak akkor, ha egérrel megyek az alatta lévő cellára. Ha bármi más módon hagyom el a szerkesztett cellát (Enter, TAB,egérrel mellé), nem modosul semmi.

private void dgw_CellEndEdit(object sender, DataGridViewCellEventArgs e) { try { gYNEVTableAdapter.Update(nN_DATADataSet.GYNEV); gYNEVTableAdapter.Fill(nN_DATADataSet.GYNEV); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
Mutasd a teljes hozzászólást!
Szia!

Próbáld meg, hogy nem a DataGridView-nél kezeled a változásokat, hanem a rákötött DataTable-nél.

Én így oldottam meg annó:

//Rákötjük az INSERT, UPDATE, DELETE eseményeket //Sor törlése => DELETE tbl.RowDeleted += new DataRowChangeEventHandler(delegate (object sender, DataRowChangeEventArgs e) { UpdateDataTableBySQL(SQL, tbl); }); //Sor szerkesztése => UPDATE tbl.RowChanged += new DataRowChangeEventHandler(delegate (object sender, DataRowChangeEventArgs e) { UpdateDataTableBySQL(SQL, tbl); }); //Új sor hozzáadása => INSERT tbl.TableNewRow += new DataTableNewRowEventHandler(delegate (object sender, DataTableNewRowEventArgs e) { UpdateDataTableBySQL(SQL, tbl); }); private void UpdateDataTableBySQL(string SelectSQL, DataTable dataTable) { GetDataAdapterBySQLWithSQLCommands(SelectSQL).Update(dataTable); } public SqlDataAdapter GetDataAdapterBySQLWithSQLCommands(string SQL) { SqlDataAdapter tmpSqlDA = new SqlDataAdapter(SQL, this.Connection); SqlCommandBuilder tmpSqlCmdBld = new SqlCommandBuilder(tmpSqlDA); return tmpSqlDA; }

W.
Mutasd a teljes hozzászólást!

  • Off és nem fog tetszeni:

    WPF és MVVM
    Mutasd a teljes hozzászólást!
  • Bejött, valóban kevéssé szimpatikus a WPF és csatolmányai.

    Komoly alkalmazásban a datagridview-t csak megjelenítésre használom, minden írás tárolt eljárásokkal megy, semmi automatizmus.

    Egyszer akartam saját használatra valamit kevesebb kódolással megcsinálni , de azt a káoszt amit itt találtam... :(
    Mutasd a teljes hozzászólást!
  • Hát speciel az adatkötés és adatháttér és megjelenített adatok konzisztenciája nagyságrendekkel korrektebb.

    Átgondoltabb, megtervezettebb és jobban rétegzett alkalmazásokhoz jó a WPF+MVVM, vagyis a régi szabály szerint: eszközt a feladathoz választani.
    Mutasd a teljes hozzászólást!
  • Szia!

    Próbáld meg, hogy nem a DataGridView-nél kezeled a változásokat, hanem a rákötött DataTable-nél.

    Én így oldottam meg annó:

    //Rákötjük az INSERT, UPDATE, DELETE eseményeket //Sor törlése => DELETE tbl.RowDeleted += new DataRowChangeEventHandler(delegate (object sender, DataRowChangeEventArgs e) { UpdateDataTableBySQL(SQL, tbl); }); //Sor szerkesztése => UPDATE tbl.RowChanged += new DataRowChangeEventHandler(delegate (object sender, DataRowChangeEventArgs e) { UpdateDataTableBySQL(SQL, tbl); }); //Új sor hozzáadása => INSERT tbl.TableNewRow += new DataTableNewRowEventHandler(delegate (object sender, DataTableNewRowEventArgs e) { UpdateDataTableBySQL(SQL, tbl); }); private void UpdateDataTableBySQL(string SelectSQL, DataTable dataTable) { GetDataAdapterBySQLWithSQLCommands(SelectSQL).Update(dataTable); } public SqlDataAdapter GetDataAdapterBySQLWithSQLCommands(string SQL) { SqlDataAdapter tmpSqlDA = new SqlDataAdapter(SQL, this.Connection); SqlCommandBuilder tmpSqlCmdBld = new SqlCommandBuilder(tmpSqlDA); return tmpSqlDA; }

    W.
    Mutasd a teljes hozzászólást!
Címkék
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd