Вот некоторый JavaScript, который я использовал для загрузки Ext Tree - я знаю, что это не на 100% то, что вы делаете, но, надеюсь, это поможет:
tree.setRootNode(new Ext.tree.AsyncTreeNode({ id: 0, text: "Subjects", expandable: false, expanded: true }));
loadTree(function(d) {
tree.setRootNode(new Ext.tree.AsyncTreeNode({ id: 0, text: "Subjects", children: d, expandable: false, expanded: true }));
});
function loadTree(callback) {
runAjax("MyServiceBlahBlahBlah.asmx/Foo", "{ItemType:" + ItemType + "}",
function(data) {
cleanTree(data.d);
callback(data.d);
});
}
//hmmm - cleanTree isn't a good name for this function, not sure what I was thinking when I named it...
function cleanTree(data, expand) {
for (var i = 0; i < data.length; i++) {
data[i].checked = false;
if (expand) data[i].expanded = true;
cleanTree(data[i].children, expand);
}
}
А вот немного C #, который я использую для создания JSON. Сорыр, чтобы бросить в тебя кухонную раковину - опять же, надеюсь, кое-что из этого тебе поможет:)
Кстати - я использовал несколько различных наборов веб-виджетов, и EXT - мой самый любимый - такой хороший выбор!
public static object GetSubjectHierarchyJSON(Func<vwHierarchicalSubject, bool> InitialPredicate, HierarchicalSubjectDAO DAO, int ItemType) {
List<LINQLayer.vwHierarchicalSubject> TempSource = DAO.GetAll(DAO.UserID, ItemType).
OrderBy(V => V.ParentSubjectName).ThenBy(V => V.LevelNumber).ThenBy(V => V.SubjectName).ToList();
var result = new List<object>();
foreach (vwHierarchicalSubject V in TempSource.Where(InitialPredicate).OrderBy(v => v.SubjectName))
result.Add(BuildJSON(V, TempSource));
return result;
}
private static object BuildJSON(vwHierarchicalSubject V, List<vwHierarchicalSubject> TempSource) {
IEnumerable<vwHierarchicalSubject> Children =
TempSource.Where(x => x.ParentID.HasValue && x.ParentID.Value == V.id).OrderBy(v => v.SubjectName);
int id = V.id;
string subText = V.SubjectName.Replace("&", "&");
if (Children.Count() == 0)
return new { id = V.id, text = subText, children = new List<object>(), expanded = true };
else {
var result = new { id = V.id, text = subText, children = new List<object>() };
foreach (vwHierarchicalSubject vElement in Children)
result.children.Add(BuildJSON(vElement, TempSource));
return result;
}
}