jQueryGrid для XML-представления List <Map> - PullRequest
0 голосов
/ 12 ноября 2011

У меня есть XML, который выглядит следующим образом:

<executionResults>
    <results>
        <items>
        <item>
            <entries>
                <entry>
                    <key>name</key>
                    <value>user1</value>
                </entry>
                <entry>
                    <key>id</key>
                    <value>id1</value>
                </entry>
            </entries>
        </item>
        <item>
            <entries>
                <entry>
                    <key>name</key>
                    <value>user2</value>
                </entry>
                <entry>
                    <key>id</key>
                    <value>id2</value>
                </entry>
            </entries>
        </item>
    </items>
    </results>
</executionResults>

И я хочу поместить его в сетку jQuery.Я пытался прочитать это: http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data

И попробовал это:

function readIntoGrid(xmlData)
{
    $('#dataGrid').jqGrid({
    datastr: xmlData,
    datatype: 'xmlstring',
    colNames:['Key', 'Value'],
    colModel:[
      {name:'key', index:'entry->key', width:120},
      {name:'value', index:'entry->value', width:120, hidden:false}
    ],
    xmlReader:
    {
        root: 'items',
        row: 'item->entries',
        repeatitems: false
    },
    height:'100%',
    sortable:false,
    caption:'List of Maps test'
  });

}

Но в сетке ничего не появляется.Как нужно изменить javascript для отображения данных в сетке?

Ответы [ 2 ]

2 голосов
/ 12 ноября 2011

Есть синтаксическая ошибка в свойстве row xmlReader.Вместо row: 'item->entries' вы должны использовать row: 'item>entries'.Вы можете (но не muss) также изменить root: 'items' на root: 'executionResults>results>items'.

Синтаксис используемых вами index свойств (index:'entry->key' и index:'entry->value') также кажется неправильным.

См. Демо .

1 голос
/ 16 ноября 2011

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

Следующий jquery работает для xml, указанного выше.

function readIntoGrid(xmlData)
{
    $('#dataGrid1').jqGrid({
    datastr: xmlData,
    datatype: 'xmlstring',
    colNames:['Second', 'First'],
    colModel:[
        {name:'value',   width: 150 },  
        {name:'value', width: 150 },
    ],
    xmlReader:
    {
        root: 'items',
        row: 'item',
        repeatitems: true,
        cell:"value"
    },
    height:'100%',
    pager: '#pager3',
    rowNum: 10,
    sortable:false,
    caption:'Search results',
    viewrecords: true,
    page: 1
    });
}

Посмотрите на повторяющиеся элементы и значения ячеек в xmlreader.

...