ASP.NET MVC + jqGrid без AJAX - PullRequest
       11

ASP.NET MVC + jqGrid без AJAX

2 голосов
/ 14 декабря 2009

У меня есть приложение ASP.NET MVC, которое выполняет поиск по базе данных продуктов. Я хочу отобразить результаты в jqGrid с помощью модуля TreeGrid. Мне не нужно, чтобы сетка была AJAX-y, потому что данные статичны и достаточно малы, чтобы их можно было сразу отправить клиенту.

Первый вопрос: как мне настроить jqGrid, чтобы вместо извлечения данных JSON из URL-адреса он просто смотрел в переменную JS или что-то в этом роде?

Во-вторых, каков наиболее подходящий способ заставить ASP.NET MVC помещать данные JSON в переменную JavaScript? У меня уже есть список в моем контроллере, и я просто хочу каким-то образом вывести его в переменную JS после JSON-ввода.

Или я слишком много борюсь с током и просто принимаю AJAX-y способ, которым jqGrid хочет работать?

Спасибо

~ Джастин

Ответы [ 3 ]

4 голосов
/ 14 декабря 2009

Вот как отобразить дерево jqGrid с помощью функции JavaScript.

$(document).ready(function() {
    TreeDemo.setupGrid($("#tree"));
});

TreeDemo = {
    data: { A: ["A1", "A2"], B: ["B1", "B2"] },
    setupGrid: function(grid) {
        grid.jqGrid({
            colNames: ['Name'],
            colModel: [
                  { name: 'Name', index: 'Name', width: "250em" }
                ],
            datatype: TreeDemo.treeData,
            loadui: "none",
            sortname: 'Number',
            treeGrid: true,
            treeGridModel: "adjacency",
            sortorder: "asc"
        })
    },
    treeData: function(postdata) {
        var items = postdata.nodeid ? TreeDemo.data[postdata.nodeid] : TreeDemo.data;
        var i = 0;
        var rows = new Array();
        for (val in items) {
            var isLeaf = postdata.nodeid != undefined;
            rows[i] = {
                Name: val,
                Id: val,
                level: postdata.nodeid ? 1 : 0,
                parent: postdata.nodeid || null,
                isLeaf: isLeaf ? "true" : "false",
                expanded: "false"
            }
            i++;
        }
        $("#tree")[0].addJSONData({
            Total: 1,
            Page: 1,
            Records: 2,
            Rows: rows
        });
    }
};

Обратите внимание, что для этого существует множество вариантов, и мой пример только один.

Я бы добавил JSON в JS-переменную так:

  1. Напишите HTML Helper, который выдает короткий скрипт на страницу.
  2. Напишите действие, которое возвращает JavaScriptResult, чтобы получить данные в файл, если по какой-то причине у вас не может быть встроенных данных.

Вы создаете JSON с помощью сериализатора .NET JavaScript. Посмотрите на JsonResult.ExecuteResult в исходном коде MVC для примера.

1 голос
/ 14 декабря 2009

См. Страницу Управление данными в вики-документации jqGrid. Там вы найдете много способов подачи данных в сетку.

0 голосов
/ 14 декабря 2009

Существует также плагин Table_to_jqGrid , который может быть полезен.

...