2

以下は、 jqGrid の列にマップしたい XML です。

<ProtoRequestInfo NPO = "102922">
    <ProtoRequest
        No = "84P6-11-00002"
        Requestor = "Daniel Frank(E677648)"
        CustomerName = "TLV BMW"
        CustomerOrder = ""
        MWO = "4601302"
        PartNumber = "813818-0003"
        ProductType = "CHRA"
        CreationDate = "12-May-2011"
        ABCClasification = "B - Durability testing / Production supplier-soft tooling"
        ProtoStatus = "Closed"
        UsageType = "Assembly Request"
        BOMAvailabilityDate = "13-May-2011"
        BOMCommitedDate = ""
        Technology = "VNT Step3 REA"
        Plant = "84P6-Thaon Les Vosges"
        EstimatedBudget_USD = "0.00">
        <Production
            No = "102219281"
            Status = "Closed"
            SalesOrder = ""
            <RequestedDeliveryDetails Date = "01-Aug-2011" Quantity = "48"/>
            <AgreedDetails Date = "29-Sep-2011" Quantity = "48"/>
            <EstimatedDetails Date = "24-Aug-2011" Quantity = "47.0"/>
            <EstimatedDetails Date = "20-Sep-2011" Quantity = "1.0"/>
            <Info>No Qty Shipped</Info>
        </Production>
    </ProtoRequest>
</ProtoRequestInfo>

次のものを列にマップするには、コルモデルをどのようにする必要がありますか?

  1. 生産タグの下の販売注文
  2. リクエストされた配送詳細タグの下の日付
  3. Requested Delivery Details タグの下の数量
4

1 に答える 1

1

列のxmlmap属性を指定し、関数として定義することができます。この関数は、パラメーターとしてメイン要素(またははわかりません)を取得します。内部で必要な属性を取得し、関数から返すことができます。SalesOrderDateQuantityxmlmap<ProtoRequestInfo><ProtoRequest>xmlmapxmlmap

回答にXML属性の操作例があります(デモを参照)。

更新デモは、投稿した形式でXMLデータを読み取る方法を示しています。結果は下の写真のようになります

ここに画像の説明を入力してください

デモでは次のコードを使用しました。

$("#list").jqGrid({
    datatype: "xml",
    url: "ReadAttrFromXml.xml",
    gridview: true,
    autoencode: true,
    height: "auto",
    rowNum: 10000, // no local paging
    colModel: [
        {name: "No", xmlmap: function (obj) {
            return $(obj).attr("No");
        }},
        {name: "Requestor", width: 130, xmlmap: function (obj) {
            return $(obj).attr("Requestor");
        }},
        {name: "CustomerName", width: 120, xmlmap: function (obj) {
            return $(obj).attr("CustomerName");
        }},
        {name: "SalesOrder", xmlmap: function (obj) {
            return $(obj).find(">Production").attr("SalesOrder");
        }},
        {name: "Date", formatter: "date", formatoptions: {srcformat: "d-M-Y"}, align: "center",
            sorttype: "date",
            xmlmap: function (obj) {
                return $(obj).find(">Production>RequestedDeliveryDetails").attr("Date");
            }},
        {name: "Quantity", formatter: "integer", sorttype: "integer", align: "right",
            xmlmap: function (obj) {
                return $(obj).find(">Production>RequestedDeliveryDetails").attr("Quantity");
            }}
    ],
    cmTemplate: {width: 100},
    xmlReader: {
        root: "ProtoRequestInfo",
        row: "ProtoRequest",
        repeatitems: false,
        id: "[No]"
    }
});

最も重要なのは、xmlmap関数との実装ですxmlReader

于 2013-02-26T13:15:47.933 に答える