Extjs: загрузка динамических данных для дерева - PullRequest
1 голос
/ 11 марта 2011

Я новичок в Extjs, хочу динамически загружать данные в дерево. Сервер возвращает мне данные, которые не в формате json, т.е. структура данных в значительной степени испорчена. Какой URL я должен указать в своем коде и как мне работать с форматом данных. Невозможно провести различие между родителем и потомком при просмотре данных, возвращаемых сервером. Я пытаюсь построить дерево на основе следующего кода ...

Ext.onReady(function() {

    var Tree = Ext.tree;

    var tree = new Tree.TreePanel({
        useArrows: true,
        autoScroll: true,
        animate: true,
        enableDD: true,
        containerScroll: true,
        border: false,
        // auto create TreeLoader
        dataUrl:'????????????????????',
        root: {
            nodeType: 'async',
            text: 'ALL',
            draggable: false,
            id: ''
        }
    });

    // render the tree
    tree.render('tree-div');
    tree.getRootNode().expand();
}); 

Ответы [ 2 ]

1 голос
/ 11 марта 2011

При передаче опции конфигурации dataUrl вы указываете компоненту дерева использовать TreeLoader по умолчанию, который принимает только массив JS (JSON) в качестве вывода с сервера. Если вы передаете другие данные с сервера, будь то XML, YAML или другой mumbojumbo, как вы сказали, вам придется написать свой собственный TreeLoader.

Проверьте документацию на Ext.tree.Treeloader или источник TreeLoader для начала, который может дать вам долгий путь в понимании того, что на самом деле нужно сделать, чтобы напишите свой собственный загрузчик, который принимает вывод вашего сервера.

0 голосов
/ 23 июля 2014

Добавление объекта json непосредственно в дерево .....

Java-код:

        for (Object object : objJSONArray) {
            i++;

            JSONObject jsobject = (JSONObject) object;
            if (i == 1) {

                treedata = jsobject;
                System.out.println("  rootnode is:::" + treedata);
            } else {
                String nodeparent = jsobject.getString("NODE_PARENT");
                String parentId = treedata.get("ID").toString();

                if (nodeparent.equals(parentId)) {
                    treedata.put("children", jsobject);
                    System.out.println("treedata  " + treedata);
                } else {
                    Set jsonKeys = treedata.keySet();
                    Iterator itr = jsonKeys.iterator();
                    while (itr.hasNext()) {
                        String keys = itr.next().toString();
                        Object keyObject = treedata.get(keys);
                        if (keyObject instanceof JSONObject) {
                            JSONObject jso = treedata.getJSONObject(keys);
                            String childParentID = jso.getString("ID");
                            if (childParentID.equals(nodeparent)) {
                                jso.put("children", jsobject);
                                treedata.put(keys, jso);
                            }
                        }
                    }
                }
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...