2013-02-26 1 views
2

Ниже XML я хочу отобразить на столбцы в jqGrid:как отобразить атрибут узла XML внутри другого узла в колонку в jqgrid

<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> 

Как colmodel должен отобразить следующие вещи в колонку?

  1. Заказать продаже под производства теге
  2. Дата под Запрошенный Доставка Подробности теге
  3. Количество под Запрошенный Доставка Подробности теге

ответ

1

Вы можете указать xmlmap атрибут для столбцов SalesOrder, Date и Quantity и определить xmlmap как функция. Функция получит главный элемент (я не уверен <ProtoRequestInfo> или <ProtoRequest>) в качестве параметра. Вы можете получить атрибут, который вам нужен внутри xmlmap, и вернуть его из функции xmlmap.

Вы можете найти пример работы с атрибутами XML в the answer (см. the demo).

ОБНОВЛЕНО: The demo показывает, как читать XML-данные в формате, который вы опубликовали. Результаты, как на картинке ниже

enter image description here

Я использовал следующий код в демо-версии:

$("#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.

+0

colModel: [ {name: 'No', index: 'No', width: 80, xmlmap: '[No]'}, {name: 'Requestor', index: 'Requestor', width: 80 , xmlmap: '[запрашивающая]'}, {имя: 'CustomerName', индекс: 'CustomerName', ширина: 80, xmlmap: '[CustomerName]}] – Suganya

+0

XMLReader: { \t \t корень: "ProtoRequestInfo", \t \t ряд: "ProtoRequest", \t \t repeatitems: ложные \t \t} – Suganya

+0

я добавили colModel и XMLReader, как указано выше. Не могли бы вы помочь мне сопоставить заказ на продажу, который находится под ребенком тега Protorequest? – Suganya

Смежные вопросы