![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: IBO
TcxGrid - Selektierte Records ändern
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:
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.
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 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... |
Re: TcxGrid - Selektierte Records ändern
Da leider Zeitdruck herrscht... hab ich erstmal nen Workaround gefunden.
Über das Grid die RowID auslesen (LINKSTORE_ID) und über diese dann den Datensatz finden und ändern. Gefällt mir nicht, aber funktioniert.
Delphi-Quellcode:
Bin also immernoch offen für bessere Vorschläge :zwinker:
cxGrid1DBTableView1.BeginUpdate;
try For ii := 0 to cxGrid1DBTableView1.Controller.SelectedRowCount-1 do begin id := Integer(cxGrid1DBTableView1.DataController.GetValue( cxGrid1DBTableView1.Controller.SelectedRecords[ii].RecordIndex, cxGrid1DBTableView1.GetColumnByFieldName('LINKSTORE_ID').Index)); With cxGrid1DBTableView1.DataController.DataSet do if Locate('LINKSTORE_ID', id, []) then begin Edit; FieldByName('UPPED').AsInteger := 1; Post; end; end; finally cxGrid1DBTableView1.EndUpdate; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz