jqGrid Автозагрузка Treegrid проблема. , - PullRequest
2 голосов
/ 03 мая 2011

У меня проблема с сеткой автозагрузки дерева.В настоящее время у меня есть структура, которая имеет глубину только 2 уровня.

1
    a
    b
    c 
2
    a

Когда я щелкаю, чтобы развернуть узел, сетка, кажется, снова добавляет другой экземпляр корневого узла, а также любой другой подузел (ы)) должен был отображаться на основе выбранного корневого узла.

1
1
    a
    b
    c

Перед тем, как выбрать корневой узел, рассмотрим XML-код:

<?xml version="1.0" encoding="UTF-8"?>
<rows>
    <page>1</page>
    <total>1</total>
    <records>1</records>
    <row>
        <cell>1112</cell>
        <cell>Parent 1</cell>
        <cell>0</cell>
        <cell>NULL</cell>
        <cell>false</cell>
        <cell>false</cell>
    </row>
</rows>

.XML после выбора корневого узла:

<?xml version="1.0" encoding="UTF-8"?>
<rows>
    <page>1</page>
    <total>1</total>
    <records>1</records>
    <row>
        <cell>1112</cell>
        <cell>Parent 1</cell>
        <cell>0</cell>
        <cell>NULL</cell>
        <cell>false</cell>
        <cell>false</cell>
    </row>
    <row>
        <cell>5207</cell>
        <cell>Child 1</cell>
        <cell>1</cell>
        <cell>1112</cell>
        <cell>false</cell>
        <cell>false</cell>
    </row>
</rows>

Кроме того, вот мой конфиг:

$(document).ready(function(){
    $("#gReport").jqGrid({
        treeGrid: true,
        treeGridModel: 'adjacency',
        ExpandColumn: 'company',
        url: document.forms['frmReport'].elements['gaddr'].value,
        datatype: 'xml',
        mtype: 'GET',
        colNames: ["ID", "Company"],
        colModel: [
            {name: 'id', index: 'id', width: 1, hidden: true, key: true},
            {name: 'company', index: 'company', width: 40, hidden: false, sortable: true}
        ],
        rowNum: -1,
        width: 980,
        height: 'auto',
        pager: false,
        caption: ''
    }),
});

Любая помощь будет принята с благодарностью.Благодарю.-Крис

1 Ответ

2 голосов
/ 03 мая 2011

Поведение, которое вы описали, действительно смешно!Проблема в том, что дочерний узел «Дочерний 1» не помечен как лист (строка <cell>false</cell> после <cell>1112</cell> является значением isLeaf).Поэтому после того, как пользователь нажмет на «Child 1», все его дочерние элементы должны быть показаны.Поскольку значение для столбца «загружено» не определено в ваших входных данных, древовидная сетка пытается загрузить с сервера дочерние элементы узла «Дочерний 1», имеющий id = 5207.Так что запрос к тому же URL с дополнительными параметрами

nodeid = 5207 & parentid = 1112 & n_level = 1

будет выполнен.Поскольку ваш сервер просто игнорирует параметры и возвращает те же XML-данные, можно увидеть сумасшедшую картину

enter image description here

(см. Демонстрационную версию здесь ).Чтобы решить эту проблему, вы должны пометить узел «Дочерний 1» как лист:

<row>
    <cell>5207</cell>
    <cell>Child 1</cell>
    <cell>1</cell>
    <cell>1112</cell>
    <cell>true</cell> <!-- here the "false" was changed to "true" -->
    <cell>false</cell>
</row>

и получить следующую сетку дерева

enter image description here

(см.демо здесь ) или добавьте дополнительные данные в файл XML для «загруженного» столбца со значением «true»:

<row>
    <cell>1112</cell>
    <cell>Parent 1</cell>
    <cell>0</cell>
    <cell>NULL</cell>
    <cell>false</cell> <!-- is leaf -->
    <cell>true</cell>  <!-- should be expanded -->
    <cell>true</cell>  <!-- is loaded -->
</row>
<row>
    <cell>5207</cell>
    <cell>Child 1</cell>
    <cell>1</cell>
    <cell>1112</cell>
    <cell>false</cell> <!-- is leaf -->
    <cell>false</cell> <!-- should be expanded -->
    <cell>true</cell>  <!-- is loaded -->
</row>

и получите сетку

enter image description here

(см. Демонстрацию здесь ).Я бы порекомендовал вам в любом случае включить «истинное» значение для «загруженного» столбца.Дополнительное преимущество, которое вы получаете, заключается в том, что вы сможете расширить любой узел во время загрузки .Например, в последней демонстрации я установил «истинное» значение в «расширенном» столбце для корневого узла, поэтому оно будет расширено во время загрузки.

...