Я использую AdvancedDataGrid для отображения иерархических данных. DataProvider - это объект, а поле children - ArrayCollection объектов. Когда я обновляю один из объектов в ArrayCollection, я бы хотел обновить сетку.Flex: изменения свойств объекта не обновляются. AdvancedDataGrid
После исследования я понимаю, что это произойдет не автоматически. Даже если я использую itemUpdated(), а затем обновляю AC. Даже если я вызываю executeBindings (рекурсивный).
Я знаю, что для того, чтобы быть умным, я должен был использовать ObjectProxy все время, так как это решило бы все мои проблемы. Теперь моя проблема заключается в том, как я могу это исправить без полной перестройки моих объектов иерархических данных?
Я попробовал, чтобы мои объекты Value расширяли ObjectProxy, но это не помогло. Есть ли элегантное решение? Могут ли набранные объекты использовать класс ObjectProxy?
Спасибо за любые полезные советы.
Вот код HierarchicalData:
<mx:HierarchicalData
source="{model.myObject}"
childrenField="trades"/>
Вот 'MyObject' Класс:
[Bindable]
public class MyObject implements ValueObject
{
public var qty:Number;
public var status:String;
public var comments:String;
public var modified_by:String;
public var modified_date:Date;
public var trades:ArrayCollection = new ArrayCollection();
}
ArrayCollection 'торгов имеет кучу торговых объектов, определенных здесь:
[Bindable]
public class Trade implements ValueObject
{
public var selected:Boolean = false;
public var quantity:Number;
public var modified_by:String;
public var modified_date:Date;
}
И вот как я заполняю коллекцию после того, как сервер вернет данные:
for (var i:int=0;i<result.length;i++){
var item:Object = result[i];
var recall:MyObject = new MyObject();
recall.comments = item.comments;
recall.qty = item.qty;
recall.status = item.status;
recall.modified_by = item.modified_by;
recall.modified_date = item.modified_date;
recall.trades.addItem(item.trades);
model.recalls.addItem(recall);
}
1. Вы пытались установить DataSource (HierarchicalData) как Bindable. 2. Если вы знаете, когда ваш источник данных меняется, почему бы не вызвать myDG.invalidateList()? –
Я обновил код выше, чтобы показать больше деталей. Вы можете видеть, что мой источник данных связывается; типизированные классы являются связываемыми. Я не знаю, где я могу ошибиться. И да, я вызвал invalidateList() в том же месте, где я попытался вызвать executeBindings (рекурсивный). – fumeng
Во-первых, это 'источник' вашего' HierarchicalData' действительно просто объект ('model.myObject'), или это ошибка, и должна быть' model.recalls'? Во-вторых, когда вы используете типизированные объекты, вам не нужен объект ObjectProxy. Если все связано и вы используете 'ArrayCollection', ADG должен обновлять свои столбцы автоматически. Итак, какой вид обновления вы ожидаете, чего не происходит? Можете ли вы предоставить простой, управляемый пример? –