Manchmal stolpert man über das einfachste...
Ich möchte lediglich diejenigen Records in der Datenbank ändern (ein SmallInt auf 1 setzen), welche im Developer Express TcxGrid selektiert sind.
Folgender Code funktioniert super, aber er ist nur für ungebundene Felder, soll heissen, im Grid wird dann zwar der neue Wert angezeigt, in der
DB jedoch nicht gespeichert. So werden diese Werte dann auch wieder gelöscht, wenn man ein Update (Refresh) macht.
Delphi-Quellcode:
cxGrid1DBTableView1.BeginUpdate;
try
For ii := 0 to cxGrid1DBTableView1.Controller.SelectedRowCount-1 do begin
cxGrid1DBTableView1.DataController.SetValue(
cxGrid1DBTableView1.Controller.SelectedRecords[ii].RecordIndex,
cxGrid1DBTableView1.GetColumnByFieldName('UPPED').Index],
1);
end;
finally
cxGrid1DBTableView1.EndUpdate;
end;
Es gibt auch noch die Möglichkeit über z.B. cxGrid1DBTableView1.DataController.GetSelectedBook mark eine Bookmark zu bekommen, damit wäre auch gedient, jedoch funktioniert dies nur, wenn das Grid im GridMode ist. Leider funktioniert dann die automatische Sortierung, Filterung und Gruppierung nicht mehr.
Es muss doch eine simple Lösung geben, wie man anhand der selektierten Records im Grid auf den Datensatz kommt um diesen Ändern zu können. Oder vielleicht gibts auch ne Variante über das Grid selbst den Datensatz zu ändern. Das Handbuch schweigt sich leider darüber aus...