Пусть jqGrid использует другую страницу для просмотра строки - PullRequest
2 голосов
/ 18 августа 2010

Я пишу веб-сайт MVC и использую jqGrid. Мне удалось заставить его работать, загружая данные, редактируя через другую веб-страницу и удаляя данные.

Тем не менее, я пытаюсь выяснить, как заставить его перейти на другую страницу, когда вы нажимаете кнопку просмотра. В настоящее время он будет отображать данные строки в виде модели. То, что мне нужно, чтобы это перейти на другую страницу, например / КЛИЕНТЫ / ViewClient / 1

Причина этого в том, что модель клиента содержит больше информации, чем я показываю в сетке. Следовательно, мне нужно перейти на отдельную страницу, чтобы отобразить всю информацию в правильном поместье.

Кто-нибудь знает, как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 18 августа 2010

я переопределил обработчик события onSelectRow:

$("TABLE.jqGrid").jqGrid({
    url: '/Widgets/Get',
    datatype: 'json',
    mtype: 'GET',
    colNames: ['Id', 'Type', 'Name'],
    colModel: [
            { name: 'Id', index: 'Id', width: 50 },
            { name: 'Type', index: 'GameType', width: 100 },
            { name: 'Name', index: 'Name', width: 150 },
        ],
    pager: '#pager',
    rowNum: 25,
    rowList: [25, 50, 100],
    sortname: 'Name',
    viewrecords: true,
    altRows: true,
    gridview: true,
    height: 'auto',
    onSelectRow: function(id)
    {
        document.location.href = '/Widgets/Show/' + id;
    }
});

вы можете заменить жестко закодированные URL-адреса на <%= Url.Action("Whatever") %>

0 голосов
/ 18 августа 2010

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

Вы можете сделать что-то вроде следующего:

  • создайте в вашем контроллере действие для jqGrid, которое вернет только страницу данных. Вы вернули данные в формате JSON. Количество строк на страницу и необходимую страницу вы получите в качестве параметров действия MVC.
  • в представлении, где вы используете jqGrid, вы должны не заполнять никаких данных. Вместо этого вы устанавливаете параметр datatype как «json», а параметр url в jqGrid - как URL-адрес действия, возвращающего выгружаемые данные. Затем jqGrid заполнит данные в соответствии с AJAX. После того, как пользователь нажмет на следующую страницу, новый запрос будет отправлен на сервер (к соответствующему действию в вашем контроллере). Номер запрашиваемой страницы будет отправлен в качестве параметра для действия.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...