Tôi muốn bắn các "nút gốc mở" sự kiện trên CellTree làm việc hiện tại của tôi, mà bây giờ có những hành vi sau đây:Programatically làm mới một Gwt CellTree
@Override
public <T> NodeInfo<?> getNodeInfo(final T value) {
return new DefaultNodeInfo<Categoria>(
(value instanceof Categoria) ?
createBranchDataProvider((Categoria)value) :
rootDataProvider,
new CategoriaCell()
);
}
private AsyncDataProvider<Categoria> createRootDataProvider() {
AsyncDataProvider<Categoria> dataProvider = new AsyncDataProvider<Categoria>() {
@Override
protected void onRangeChanged(HasData<Categoria> display) {
AsyncCallback<Categoria[]> cb = new AsyncCallback<Categoria[]>() {
@Override
public void onSuccess(Categoria[] result) {
updateRowCount(result.length, true);
updateRowData(0, Arrays.asList(result));
}
@Override
public void onFailure(Throwable caught) {
Window.alert(caught.toString());
}
};
rpcService.getCategorie(cb);
}
};
return dataProvider;
}
Làm thế nào tôi có thể bắn mà "onRangeChanged" sự kiện, để làm mới các nút cấp 1 của tôi?
Phương pháp tiện lợi của tôi bị thiếu là gì?
private void updateTree() {
TreeNode rootTreeNode = cellTree.getRootTreeNode();
for (int i = 0; i < rootTreeNode.getChildCount(); i++) {
rootTreeNode.setChildOpen(i, false);
}
// HOW TO REFRESH LEVEL-1 NODES?
}
<< Sau này khi bạn làm mới danh sách của bạn, bạn phải cập nhật dataProvider bạn được lưu trữ cho các nút cấp 1 của bạn. >> Tốt!^___^nhưng ... LÀM THẾ NÀO?!? -.- 'Tôi có nghĩa là, phương pháp duy nhất có sẵn trên nhà cung cấp là updateRowData(), tôi có phải sao chép mã rpc có trong onRangeChanged(), hoặc tôi có thể kích hoạt sự kiện "range changed" theo một cách nào đó ?? cảm ơn –
xem câu trả lời cập nhật của tôi –