Подсетки jqgrid из одного вложенного json

Я хочу использовать jqgrid с вложенными подсетями. Тем не менее, единственные примеры, которые ямы нашли заполнить основную сетку одним вызовом загрузки данных URL и отдельными вызовами для заполнения подсетей.

Мои данные подсетей существуют как вложенные документы в одной структуре JSON, как показано во фрагменте ниже (я хочу, чтобы главы отображались как подсетки книги, а файлы - как подсетки внутри глав).

Могу ли я создавать подсетки из вложенных документов JSON с помощью jqgrid?

{
  _id: {"509403957ae7d3929edcb812"},
  name: {"MYBOOK"},
  layout: {
        chapters [
           {
              name: "myfirstchapter",
              sequence: 1,
              title: "My First Chapter",
              files: [
                 {
                 filetype: "tex",
                 name: "myfirstfile"
                 },
                 {
                 filetype: "tmpl",
                 name: "myfileb",
                 }
              ],

           },
           {
              name: "mysecondchapter",
              sequence: 2,
              title: "My Second Chapter",
              files: [
                 {
                 filetype: "tex",
                 name: "myintro"
                 },
                 {
                 filetype: "tex",
                 name: "myfilec",
                 }
              ],

           ],
        }
}

Ответы на вопрос(1)

Решение Вопроса

я сделалдемо которые демонстрируют, как это сделать:

Демо основано на описанной идееВот и на то что внутреннийdata опция сохраняет входные данные внеизмененный форма. Так ты неДля сохранения дополнительной информации, связанной со строкой, необходимо создать несколько скрытых столбцов. Увидетьответ а такжеэтот Больше подробностей. Я настоятельно рекомендую вам дополнительно использоватьidPrefix вариант в подсетях. Увидетьответ для деталей.

Ниже в коде, который я использовал вдемо:

var myData = {
        _id: "509403957ae7d3929edcb812",
        name: "MYBOOK",
        layout: {
            chapters: [
                {
                    name: "myfirstchapter",
                    sequence: 1,
                    title: "My First Chapter",
                    files: [
                        { filetype: "tex", name: "myfirstfile" },
                        { filetype: "tmpl", name: "myfileb" }
                    ]
                },
                {
                    name: "mysecondchapter",
                    sequence: 2,
                    title: "My Second Chapter",
                    files: [
                        { filetype: "tex", name: "myintro" },
                        { filetype: "tex", name: "myfilec" }
                    ]
                }
            ]
        }
    },
    $grid = $("#list");

$grid.jqGrid({
    datatype: "local",
    data: myData.layout.chapters,
    colNames: ["Sequence", "Name", "Title"],
    colModel: [
        {name: "sequence", width: 65, key: true },
        {name: "name", width: 150 },
        {name: "title", width: 150}
    ],
    rowNum: 10,
    rowList: [5, 10, 20],
    pager: "#pager",
    gridview: true,
    ignoreCase: true,
    rownumbers: true,
    sortname: "sequence",
    viewrecords: true,
    height: "100%",
    subGrid: true,
    subGridRowExpanded: function (subgridId, rowid) {
        var subgridTableId = subgridId + "_t";
        $("#" + subgridId).html("");
        $("#" + subgridTableId).jqGrid({
            datatype: "local",
            data: $(this).jqGrid("getLocalRow", rowid).files,
            colNames: ["Name", "Filetype"],
            colModel: [
              {name: "name", width: 130, key: true},
              {name: "filetype", width: 130}
            ],
            height: "100%",
            rowNum: 10,
            sortname: "name",
            idPrefix: "s_" + rowid + "_"
        });
    }
});
$grid.jqGrid("navGrid", "#pager", {add: false, edit: false, del: false});

В приведенном выше коде я исправил некоторые синтаксические ошибки из данных, которые вы разместили.

 Tim06 нояб. 2012 г., 21:16
Благодарю. Я попробую больше с примером, который выя уже дал и если смогуНе пойму, я задам другой вопрос. Спасибо!
 Oleg06 нояб. 2012 г., 22:13
@ Тим: Добро пожаловать! Одна проблема с jqGrid - слишком много альтернативных способов реализации. Например, существуютdata параметр в другой ситуации. Если вы используетеdatatype: "json" безloadonce: true Тогда нетdata будет заполнено. В случае, если нужно реализовать один способ решения. Если вы используетеdatatype: "json" сloadonce: true затемdata будет заполнено, но с некоторыми ограничениями. Если вы используетеdatatype: "local" Вы можете использовать свободную структуруdata, Можно создать решение для всех случаев, но реализация будет отличаться.
 Tim06 нояб. 2012 г., 19:05
спасибо Олег, я использую ваш пример, чтобы учиться сейчас. Но чтобы убедиться, что я понимаю, я сначала загружаю данные с помощью URL-адреса с моего сервера баз данных, а затем подсетка имеет тип данных 'местный', правильный?
 Oleg06 нояб. 2012 г., 19:48
@ Тим: Добро пожаловать! Есть много разных сценариев для заполнения jqGrid. Это'Лучше, если вы будете подробно описывать ваши требования. Вы хотите лучше использоватьdatatype: "json"? Вы хотите реализовать подкачку данных на стороне сервера или хотите использовать?loadonce: true

Ваш ответ на вопрос