jqGrid navGrid кнопка вызова ASP.NET MVC view - как? - PullRequest
3 голосов
/ 13 марта 2011

Я использую: VS 2010, ASP.NET MVC2, jqGrid 3.8.2.

Я хочу, чтобы кнопка «Изменить» navGrid открывала другое представление в контроллере. Я перепробовал несколько вещей безрезультатно. Для того, чтобы открыть выбранную строку, я предполагаю, что мне нужно будет добавить идентификатор в URL.

jQuery('#listComponents').jqGrid({
    url: '/Components/Get',
    editurl: '/Components/Edit',
    ...
    }).navGrid('#pagerComponents', {edit:true, ...}, {url: '/Components/Edit'});

Любые предложения приветствуются. Если я не могу заставить его работать, я добавлю кнопку «Изменить» вне jqGrid и сделаю обычный вызов Html.ActionLink, чтобы открыть другое представление.

Спасибо!

Обновление

Следуя @ ответу Олега, теперь у меня отлично работает следующее:

    jQuery('#listComponents').jqGrid(
    {
        url: '/Components/Get/',
        ...
    }).navGrid('#pagerComponents', { edit: false, ...})
    .navButtonAdd('#pagerComponents', {
        caption: "",
        title: "Edit Component",
        buttonicon: "ui-icon-pencil",
        onClickButton: function () {
            var id = jQuery("#listComponents").getGridParam('selrow');
            if (id) {
                var data = jQuery("#listComponents").getRowData(id);
                window.location = '/Components/Edit/' + data.COMPONENTID;
            }
            else {
                alert("Please select a row to edit.");
            }
        }});

1 Ответ

4 голосов
/ 13 марта 2011

Опция {edit:true, ...} navGrid соответствует использованию editGridRow метода редактирования формы, поэтому будет отображаться диалоговое окно, а не вид вашего контроллера MVC.Чтобы иметь желаемое поведение, вы должны использовать настройку {edit:false, ...} и добавить пользовательскую кнопку , которая выглядит точно так же, как и оригинальная кнопка «Редактировать».Для этого вам следует использовать параметр buttonicon: "ui-icon-pencil" (см. editicon параметр по умолчанию в исходном коде navGrid ).В этом ответе вы найдете пример кода.Вы можете дополнительно использовать $.jgrid.nav.edittitle в качестве параметра заголовка:

var grid = $("#listComponents");
grid.jqGrid({
    url: '/Components/Get',
    editurl: '/Components/Edit',
    ...
});
grid.navGrid('#pagerComponents', {edit:false, ...}, ...);
grid.jqGrid ('navButtonAdd', '#pagerComponents',
    { caption: "", buttonicon: "ui-icon-pencil", title: $.jgrid.nav.edittitle,
      onClickButton: function() {
          var rowid = grid.jqGrid('getGridParam', 'selrow');
          window.location = '/Components/Edit/' + 'rowid';
      }
    }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...