【问题标题】:Spring4d - ObjectDataset refresh does not get records from underlying IObjectListSpring4d - ObjectDataset 刷新没有从底层 IObjectList 获取记录
【发布时间】:2017-05-22 04:18:57
【问题描述】:

我正在使用 Spring4d TObjectDataset 和从 TListBase<TObject> 派生的自定义 IObjectList 适配器。我使用this SOA 作为基础,虽然它使用TObjectList 而我使用TCollection

我将TObjectDataset.Datalist 属性设置为此适配器的一个新实例。但是,如果我将条目直接添加到底层 TCollection 中,然后点击 TObjectDataset.Refresh,则 TObjectDataset 似乎不会查询底层 TCollection 以获取新记录(它不会查询 GetCount程序)。但是,如果我先执行TObjectDataset.Close 然后TObjectDataset.Open,则会显示新记录。

TObjectDataset 中是否有刷新条目的机制?

我想在我的自定义 TCollection 类上实现 INotifyCollectionChanged<T> 接口。 IObjectList 适配器将订阅更改通知,并自行更新。但也许有一种内置的方法可以做到这一点?

【问题讨论】:

    标签: delphi spring4d


    【解决方案1】:

    TrackChanges 属性设置为True。这会导致 ODS 将 OnChanged 处理程序添加到列表中。

    如果您将项目添加到列表中,但您不走运但不会通知适配器的任何更改,并且需要添加到适配器列表或以其他方式解决它。

    P.S.:可能是 TObjectDataSet.InternalRefresh 缺少继承的调用 - 试试看。

    【讨论】:

      猜你喜欢
      • 2020-08-12
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-09
      • 2011-06-05
      • 2018-04-08
      • 1970-01-01
      相关资源
      最近更新 更多