当绑定对象的属性发生变化时,如何通知Spring4D的 TObjectDataSet?
附加网格中显示的值在使用 ObjectDataSet.FieldByName('Description').AsString:='Bob'; 时会更新,但在调用 ObjectDataSet.GetCurrentModel<TSaleLine>.Description:='Bob'; 时不会更新。
这是可以理解的,因为TObjectDataSet并未监控对象属性,因此对变化毫无察觉。
我想为TObjectDataSet增加OnPropertyChanged支持,以监控当前模型的变化,这将像字段变化时那样触发DataEvent(deFieldChange,
我已经尝试了下面这些,但都不行。
type
TL = class(TGridDataLink);
begin
ObjectDataSet.GetCurrentModel<TSaleLine>.Description:='Bob';
var G:=TGridDataLink.Create(Grid);
TL(G).RecordChanged(ObjectDataSet.FieldByName('Description'));
G.Free;
end;
解决方案
相关步骤如下:
- 列表中对象的类需要实现
Spring.INotifyPropertyChanged,但不能进行引用计数——最好让它们从Spring.TInterfaceBase继承。 - 列表需要是一个可观察的列表——通过
Spring.Collections.TCollections.CreateObservableList来创建。 - ObjectDataSet需要具备
TrackChanges := True。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。