2012-04-15 22 views
8

Tôi đang cố gắng làm cho mạng con của mình hoạt động với dữ liệu cục bộ. Tuy nhiên, khi tôi nhấp vào mở rộng, tôi chỉ nhận được một hộp tải như lưới đang cố gắng để kéo dữ liệu từ một nơi nào đó. Tôi giả sử tôi không cần subGridUrl vì kiểu dữ liệu của lưới chính là datatype:'local'. Tôi có nên làm gì khác không?jqGrid Subgrid với dữ liệu "cục bộ"

Trả lời

21

Không có cách trực tiếp để xác định mạng con với dữ liệu cục bộ, nhưng bạn có thể thực hiện tương đối dễ dàng hành vi tương tự bằng cách sử dụng subGridRowExpanded (Subgrid as Grid). Những gì người ta cần làm là chỉ để có được từ một số bạn cấu trúc bên trong dữ liệu cho subgrid bởi rowid của lưới. Ví dụ nếu bạn muốn có bản đồ subgrids như

var myGridData = [ 
     // main grid data 
     {id: "m1", col1: "11", col2: "12"}, 
     {id: "m2", col1: "21", col2: "22"} 
    ], 
    mySubgrids = { 
     m1: [ 
      // data for subgrid for the id=m1 
      {id: "s1a", c1: "aa", c2: "ab", c3: "ac"}, 
      {id: "s1b", c1: "ba", c2: "bb", c3: "bc"}, 
      {id: "s1c", c1: "ca", c2: "cb", c3: "cc"} 
     ], 
     m2: [ 
      // data for subgrid for the id=m2 
      {id: "s2a", c1: "xx", c2: "xy", c3: "xz"} 
     ] 
    }; 

Bên trong subGridRowExpanded bạn có thể tạo subgrid với đoạn mã sau:

$("#grid").jqGrid({ 
    datatype: 'local', 
    data: myGridData, 
    colNames: ['Column 1', 'Column 2'], 
    colModel: [ 
     { name: 'col1', width: 200 }, 
     { name: 'col2', width: 200 } 
    ], 
    ... 
    subGrid: true, 
    subGridRowExpanded: function (subgridDivId, rowId) { 
     var subgridTableId = subgridDivId + "_t"; 
     $("#" + subgridDivId).html("<table id='" + subgridTableId + "'></table>"); 
     $("#" + subgridTableId).jqGrid({ 
      datatype: 'local', 
      data: mySubgrids[rowId], 
      colNames: ['Col 1', 'Col 2', 'Col 3'], 
      colModel: [ 
       { name: 'c1', width: 100 }, 
       { name: 'c2', width: 100 }, 
       { name: 'c3', width: 100 } 
      ], 
      ... 
     }); 
    } 
}); 

The demo cho thấy kết quả sống:

enter image description here

+0

lớn trả lời Oleg. Tôi sẽ thực hiện điều này trong mã của tôi! Tôi thực sự sử dụng điều này kết hợp với Kéo và Thả từ lưới đến lưới (từ [câu hỏi] khác của tôi (http://stackoverflow.com/questions/10146892/jqgrid-drag-and-drop-row-check)) . – FastTrack

+0

@FastTrack: Bạn được hoan nghênh! – Oleg

+0

@oleg Câu trả lời tuyệt vời, nó đã giúp tôi trong một vấn đề lớn mặc dù tôi có thể upvote nó chỉ một lần. :( –

Các vấn đề liên quan