2010-09-01 32 views
5

Tôi khá mới đối với jQuery và chỉ bắt đầu làm việc với jqGrid. Tôi đã xem qua các tài liệu jqGrid để tìm ra cách hiển thị một số dữ liệu mà tôi nhận được ở định dạng JSON trong lưới của tôi để không có kết quả. Khi tôi tạo lưới, nó sẽ hiển thị với các tiêu đề chính xác, thông tin máy nhắn tin, vv và thông qua Firebug và tôi có thể thấy yêu cầu và phản hồi của dữ liệu JSON. Các jsonReader dưới đây là một trong nhiều người tôi đã cố gắng và trong callbacks chức năng tôi có thể đăng nhập các giá trị cụ thể tôi nhận được trở lại vì vậy tôi biết tôi nhận được dữ liệu.jqGrid và trình đọc JSON

Cách thích hợp để tôi lấy JSON được chỉ định dưới đây được tải vào jqGrid là gì?

Dưới đây là các mã có liên quan:

HTML:

<div id="dataInfo"> 
    <table id="dataTable"></table> 
    <div id="dataTablePager"></div> 
</div> 

JS

jQuery("#dataTable").jqGrid({ 
       url: 'http://<snip>', 
       mtype: 'GET', 
       datatype: 'json', 
       jsonReader: { 
        root: 'ipResponses', 
        id: 'startIP', 
        repeatitems: false, 
        page: function(obj) { return 1; }, 
        total: function(obj) { return 1; }, 
        records: function(obj) { return obj.ipInfo.ipResponses.length; }, 
        userdata: "userData" 
       }, 
       colNames: ['StartIP', 'EndIP'], 
       colModel: [ 
        { 
         name: 'startIP', 
         index: 'startIP', 
         width: 55 
        }, 
        { 
         name: 'endIP', 
         index: 'endIP', 
         width: 55 
        } 
       ], 
       pager: '#dataTablePager', 
       rowNum: 8, 
       rowList: [25,50,100], 
       sortname: 'startIP', 
       sortorder: 'asc', 
       viewrecords: true, 
       caption: 'Data', 
       pgtext:"Page {0}" 
      }); 

JSON

{ 
    "ipInfo": { 
     "queryStartIP": "4.4.4.0", 
     "queryEndIP": "4.4.4.256", 
     "ipResponses": [ 
      { "startIP": "4.4.4.1", "endIP": "4.4.4.5"}, 
      { "startIP": "4.4.4.10", "endIP": "4.4.4.15"} 
     ] 
    } 
} 

Trả lời

12

Vấn đề chính của bạn là một số thay đổi nhỏ trong jsonReader. Nó có thể là ví dụ:

jsonReader: { 
    root: 'ipInfo.ipResponses', 
    id: 'startIP', 
    repeatitems: false, 
    page: function(obj) { return 1; }, 
    total: function(obj) { return 1; }, 
    records: function(obj) { return obj.ipInfo.ipResponses.length; }, 
} 

Cùng một số thay đổi mỹ phẩm bạn có thể thấy trực tiếp dưới http://www.ok-soft-gmbh.com/jqGrid/ipInfo.htm.

+0

Tuyệt vời! Tôi biết tôi phải gần gũi. Cảm ơn nhiều. –

+0

Tôi có thêm một câu hỏi. Tôi có một đối tượng trong đối tượng ipInfo với dữ liệu tương tự, nhưng nó không nằm trong một mảng. Về cơ bản nó sẽ là một đối tượng duy nhất (gọi nó là newObj: {x: 10, y: 10}) trong mỗi đối tượng ipInfo mà tôi sẽ có nhiều đối tượng ipInfo trả về. –

+0

Ahhh ... đừng lo, tôi đã tìm ra. Nó dường như phải là một mảng, vì vậy tôi đã thay đổi root thành root: function (obj) {return [obj.ipInfo.newObj]; } nó đã làm việc. Cảm ơn một lần nữa vì sự giúp đỡ của bạn. –