今日在给某客户做的系统里的输出展示部分使用了F9DataGrid,客户提的一个需求是在界面中同时展示次优报价,遂使用了F9DataGrid的SubNode功能——将次优报价作为最优报价的子节点来展示。在后面的测试中,发现增加或删除一个子节点后,更新的那个子节点就不能正确的展示了。后经过调试发现是增加或删除一个子节点后,Grid的行数没有更新成最新的,这个行数的更新是在Prepare里做的,而Prepare函数在一开始有这样一句代码
if (fgsPrepare in FF9GridState) or FIsLockUpdate { or FDestroying } then
Exit;
如果FF9GridState里有fgsPrepare,那么就直接退出函数了,这就好办了,最后在AddNode函数(增加节点)和Remove函数(删除节点)里都添加了下面这句,测试,问题解决。
FGrid.FF9GridState := FGrid.FF9GridState - [fgsPrepare];