我的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以显示网格中的数据?
答案 0 :(得分:2)
row
的{{1}}属性存在语法错误。您应该使用xmlReader
而不是row: 'item->entries'
。您可以(但不是muss)将row: 'item>entries'
修改为root: 'items'
。
您使用的root: 'executionResults>results>items'
属性的语法(index
和index:'entry->key'
)似乎也是错误的。
请参阅the demo。
答案 1 :(得分:1)
我假设上面给出的xml略有不同,这意味着所有“item”的“key”应该是相同的(它们将是列。因此列应该为每个“item”重复)。如下所示:
以下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中的重复项和单元格值。