Chtěl bych požádat o radu. Mám datagridview, který mám přes dataset propojen s tabulkou Accessu.
Private Sub Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.DepartmentsTableAdapter.Fill(Me.DataDS.Departments)
End Sub
Private Sub SaveToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveToolStripButton.Click
DepartmentsTableAdapter.Update(Me.DataDS.Departments)
End Sub
Pokud kliknu na button pro uložení, všechny změny v gridu se korektně do zdrojové DB uloží až na jednu výjimku. Problém je pokud změna nastane pouze ve sloupci gridu, který je typu DataGridViewCheckBoxColumn. Pokud udělám změnu i v nějakém klasickém sloupci např. textboxu tak zdrojová databáze je aktualizovaná korektně tedy i včetně změny v checkboxu. Dokonce pokud checkbox převedu na typ textboxu tak uvedený problém odpadá. Jenže vypisovat všude True nebo False mi přijde uživatelsky nekorektní. Přijde mi to, jako by databinding ignoroval change u tohoto controlu. To vysvětluje, že update proběhne pokud změním i jiný sloupec textového či jiného typu. Věděl by jste někdo jak tenhle nedostatek elegantně obejít ? Jediný co mě napadá je, při změně datarow ověřit zda došlo ke změně a pokud ano pro jistotu programově provést update i u nějakého např. textového sloupce, abych adaptér donutil provést update. Ale nepřijde mi to moc elegantní. Mohl bych sice provést celý update manuálně, ale protože mám těchto tabulek povícero, tak to bych bral jako poslední možnost. Předem díky za každou radu.
|