我正在使用GWT 2.4。我想創建一個具有固定頂層節點集的樹,但是在打開每個樹時,都會從服務器動態檢索數據。我找到了AsyncDataProvider類來幫助我,但我無法弄清楚如何預先使用一組初始值填充數據模型。我有這樣的代碼(不工作)...當我啓動我的應用程序GWT:我如何使用AsyncDataModel填充CellTree的初始列表?
public class CellTreeExample implements EntryPoint {
/**
* The model that defines the nodes in the tree.
*/
private static class CustomTreeModel implements TreeViewModel {
/**
* Get the {@link NodeInfo} that provides the children of the specified
* value.
*/
public <T> NodeInfo<?> getNodeInfo(T value) {
/*
* Create some data in a data provider. Use the parent value as a prefix
* for the next level.
*/
AsyncDataProvider<String> dataProvider = new AsyncDataProvider<String>() {
@Override
protected void onRangeChanged(HasData<String> display) {
// Execute dynamic logic here.
}
};
// Set a default set of nodes.
TextCell textCell = new TextCell();
final CellList<String> cellList = new CellList<String>(textCell);
final List<String> rootNodes = getRootNodes();
cellList.setRowCount(rootNodes.size(), true);
dataProvider.addDataDisplay(cellList);
// Return a node info that pairs the data with a cell.
return new DefaultNodeInfo<String>(dataProvider, new TextCell());
}
public boolean isLeaf(Object value) {
// some logic
}
}
public void onModuleLoad() {
// Create a model for the tree.
TreeViewModel model = new CustomTreeModel();
/*
* Create the tree using the model. We specify the default value of the
* hidden root node as "Item 1".
*/
CellTree tree = new CellTree(model, "Item 1");
// Add the tree to the root layout panel.
RootLayoutPanel.get().add(tree);
}
沒有出現,我肯定,其初始小區列表中包含6項。任何想法爲什麼他們不顯示?在構建用於CellTree的CellList時,TextCell不是正確的類型嗎? - Dave
我想初始集是預定義的根節點,但之後的所有內容都應該異步(動態)加載。在你列舉的例子中,我無法弄清楚事情是如何動態加載的。好像所有的數據都是靜態的。感謝您的任何其他想法, - Dave – Dave
在getNodeInfo的例子中,如果value == null,那麼這是根的一個檢查,如果返回DefaultNodeInfo與AsyncDataProvider實例,則在else的部分。您的onRangeChanged應該使用動態檢索的數據調用updateRowData。 –