在同一个JQGrid中加载多个xml标记

时间:2015-03-23 06:42:37

标签: jquery xml jqgrid

我的xml文件是这样的:

<abc>
   <a>
      <item>
         <name>...</name>
        <cost>....</cost>
      </item>
      .
      .
      .  
      .
   </a>
   <b>
      <item>
         <name>...</name>
         <cost>....</cost>
      </item>
      .
      .
      .  
      .
   </b>

我想在jqgrid上加载标记和[不同时更改两个标记名称]的值。当我使用xmlReader两次它只加载后来的根值.....任何人都知道如何加载这两个标签????

1 个答案:

答案 0 :(得分:0)

读取此类XML数据的最简单方法是指定xmlReader,如下所示

xmlReader : {
    root: "abc",
    row: "a>item,b>item",
    repeatitems: false
}

在更复杂的情况下,您可以使用xmlReader内的函数:

xmlReader : {
    root: "abc",
    row: function (obj) {
        return $("a>item,b>item", obj);
    },
    repeatitems: false
}

xmlReader : {
    root: "abc",
    row: function (obj) {
        return $("a>item", obj).add("b>item", obj);
    },
    repeatitems: false
}

The corresponding demo阅读以下XML

<?xml version="1.0" encoding="UTF-8"?>
<abc>
   <a>
      <item>
         <name>Name A1</name>
         <cost>123</cost>
      </item>
      <item>
         <name>Name A2</name>
         <cost>234</cost>
      </item>
   </a>
   <b>
      <item>
         <name>Name B1</name>
         <cost>345</cost>
      </item>
      <item>
         <name>Name B2</name>
         <cost>456</cost>
      </item>
   </b>
</abc>

并将结果显示为

enter image description here

它使用代码

$("#list").jqGrid({
    url: "Ambkrish.xml",
    datatype: "xml",
    gridview: true,
    autoencode: true,
    pager: "#pager",
    rowNum: 10,
    rowList: [10, 20, 50],
    viewrecords: true,
    height: "auto",
    xmlReader : {
        root: "abc",
        row: "a>item,b>item",
        repeatitems: false
    },
    colModel:[
        { name: "name", label: "Name" },
        { name: "cost", label: "Cost", formatter: "integer", sorttype: "integer", align: "right" }
    ],
    cmTemplate: {width: 200},
    loadonce: true
});