Yes, I use it. But I have problem to load whole tree in one ajax request.
Down is example I use: DropDownField with TreePanel. In TreePanel I have TreeStore and ajaxProxy. Nodes loading when user clicks on one node, but I need to load all nodes and subnodes on page load. I try to put Children on nodes but it don't works.
Html.X().DropDownField().ID("DropDownFieldKontniPlanDokument")
.Editable(false).TriggerIcon(TriggerIcon.SimpleArrowDown)//.PickerAlign("tl-tr?")
.Width(200).LabelWidth(100).FieldLabel(Resources.R.KontoDokument).MatchFieldWidth(false)
.Component(component => {
component.Add(
Html.X().TreePanel().ID("TreePanelKp")
.DisplayField("text")//Kp_Naziv
.Height(400).Width(300).UseArrows(true).AutoScroll(true).Animate(true).RootVisible(true)//.SingleExpand(true)
.Store(store =>
{
store.Add(Html.X().TreeStore().ID("TreeStoreKontniPlanDokument")//.AutoLoad(true)
.Proxy(proxy =>
{
proxy.Add(Html.X().AjaxProxy().Url("/KontniPlan/GetTree").Reader(reader =>
{
reader.Add(Html.X().JsonReader().IDProperty("id").Root("result"));
}));
})
.Model(model =>
{
model.Add(Html.X().Model().ID("ModelKontniPlanStablo").Fields(fields =>
{
fields.Add(Html.X().ModelField().Name("id").Type(ModelFieldType.Int));
fields.Add(Html.X().ModelField().Name("text"));
}));
})
);
})
.Root(root =>
{
root.Add(Html.X().Node().Text("koren").Icon(Icon.Folder).Checked(false));
})
.Buttons(buttons =>
{
buttons.Add(Html.X().Button().ID("ButtonZatvoriStablo").Text(Resources.R.Zatvori)
.Listeners(listeners =>
{
listeners.Click.Handler = "Ext.getCmp('DropDownFieldKontniPlanDokument').collapse();";
})
);
})
);
})
);
public AjaxResult GetTree()
{
NodeCollection nodes = new NodeCollection(false);
for (int i = 1; i < 6; i++)
{
Node asyncNode = new Node();
asyncNode.Text = Guid.NewGuid().ToString();
asyncNode.NodeID = Guid.NewGuid().ToString();
asyncNode.Icon = Icon.Music;
asyncNode.Checked = false;
asyncNode.Children.Add(new Node { NodeID = Guid.NewGuid().ToString(), Text = "n0", Checked = false, Icon = Icon.FolderBell });
asyncNode.Children.Add(new Node { NodeID = Guid.NewGuid().ToString(), Text = "n1", Checked = false, Icon = Icon.FolderBell });
asyncNode.Children.Add(new Node { NodeID = Guid.NewGuid().ToString(), Text = "n2", Checked = false, Icon = Icon.FolderBookmark });
nodes.Add(asyncNode);
}
for (int i = 6; i < 11; i++)
{
Node node = new Node();
node.Text = Guid.NewGuid().ToString();
node.NodeID = Guid.NewGuid().ToString();
node.Leaf = true;
node.Checked = false;
node.Icon = Icon.FolderCamera;
node.Children.Add(new Node { NodeID = Guid.NewGuid().ToString(), Text = "n01", Checked = false, Icon = Icon.Folder });
node.Children.Add(new Node { NodeID = Guid.NewGuid().ToString(), Text = "n12", Checked = false, Icon = Icon.Folder });
node.Children.Add(new Node { NodeID = Guid.NewGuid().ToString(), Text = "n23", Checked = false, Icon = Icon.Folder });
nodes.Add(node);
}
AjaxResult result = new AjaxResult { Result = nodes.ToJson() };
return result;
}