DBADVGRID Loses Edits When Filtering the Dataset

I am trying to edit one particular cell in a DBADVGRID with a Dataset from an FDQuery (Also tried ClientDataSet). ITs a SmallInt field and using the Checkbox Type on the Column. In order to Edit I have PageMode = True, PostMode to EpCell but the problem is that I have to set the DataSetType to DtNonSequenced. The issue with this is that the scrolling becomes a problem. If I set DataSetType to DtSequenced as soon as I issue a filter on the dataset any Checkboxes that were changed to 1/Checked are being cleared. So I have the dilemma of bad scrolling having to use dtNonSequenced. Is there any other way to accomplish this ? Why does the filtering clear the cell when set to dtSequenced ?? Help would be appreciated.


So I corrected the problem but the correction leaves me some doubt. I am using an inheritable form in which the dataset was set to Cached Updates and I did not realize that. Perhaps I am conceptualizing this wrong but figured that when loading all data into the CDS or MemTable or FDQ(Cached Update) that the DBADVGrid was persisting the data to the in memory table and that when a query was done that it would not pull fresh data from the table and therefore overwrite any changes. In other words when Delphi does a query all data that is not commited/applyupdate will be lost. Did not realize that the query would do this. In all reality what I wanted to do is allow some editing on the Grid (a checkbox to perform sending a message to certain people) and when done that the data was not persisted in any way to the table. If I use the filtering functions of DBADVGrid instead of the dataset will this accomplish this ? Or does the grid perform the same function back to the dataset therefore losing my edits?

I understand you connect the DBAdvGrid to a memory dataset.
If so, editing in the grid will be reflected to the connected memory dataset.
If you want the changes in the memory dataset to be reflected in your table, you will need to programmatically apply the memory dataset changes to the table. The grid will not do this, it only sees the connected memory dataset.

Totally understand, my point was that I did not realize that filtering an in memory dataset would flush the cache, now I know. But the other part is that I would love to be able to use the dtNONSequenced setting of the grid because then I can filter without losing changes. The problem is that with the dtNONSeqeunced setting the scrolling and order and Grid behavior becomes an erratic problem. Let me ask, if I use a MEMTable instead of FDQ(Cached Update) or CDS, and I set to dtNONSequenced, am I going to still experience the issue with grid scrolling and drawing ? I do not care to persist the changes to this dataset, I actually want to clear any changes that I make but only after I exit the form not everytime I issue a filter on the dataset.