Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Пользовательская функция удаления в jqGrid

Автор вопроса: LorenzoОтветов: 1

Я пытаюсь настроить функцию удаления в jqGrid.

Я включил кнопку удаления в сетке

$("#myGrid").jqGrid('navGrid', '#pager',
    { add: true, addtitle: 'Add Customer',
        edit: true, edittitle: 'Edit Customer',
        del: true, deltitle: 'Delete Customer',
        refresh: true, refreshtitle: 'Refresh data',
        search: true, searchtitle: 'Apply filters',
        addfunc: addForo, editfunc: editForo,
        cloneToTop: true
    },
    {}, // default settings for edit
    {}, // default settings for add
    {}, // default settings for delete
    { closeOnEscape: true, multipleSearch: true, closeAfterSearch: true }, // search options
    {} // default settings for view
);

затем я добавил (благодаря этому сообщению) следующий код

$("#bDelete").click(function () {
    // Get the currently selected row
    toDelete = $("#myGrid").jqGrid('getGridParam', 'selrow');
    $("#myGrid").jqGrid(
        'delGridRow',
        toDelete,
        { url: '/Foro/Delete/' + toDelete, mtype: 'post', reloadAfterSubmit: false }
    );
});

Теперь, когда я нажимаю кнопку удаления, отображается диалоговое окно с запросом подтверждения удаления. Но если я нажму на кнопку удаления, я получу следующее сообщение об ошибке

Где я не прав?

jqgrid

Ответы

Ответ 1 · рейтинг 5 · Oleg

Если я правильно понимаю, вы хотите изменить url, используемый для удаления строки, чтобы идентификатор строки был частью url. Вы можете сделать это намного проще:

$("#myGrid").jqGrid('navGrid', '#pager',
    // define navGrid options and paraneters of Edit and Add dialogs
    { // now define settings for Delete dialog
      mtype: "POST", reloadAfterSubmit: false,
      onclickSubmit: function(rp_ge, postdata) {
          rp_ge.url = '/Foro/Delete/'+ postdata;
      },
      serializeDelData: function (postdata) { return ""; }
    },
    // search options
    // ...
);

Что касается onclickSubmit, мы можем изменить url, а определение serializeDelData мы можем очистить тело сообщения "POST". Лично я в основном использую службы RESTfull на стороне сервера и использую mtype: "DELETE". В случае очищения от тела это действительно необходимо.

Еще один вариант - использовать delfunc, как вы уже используете editfunc и addfunc. В большинстве случаев в использовании такой функции нет необходимости, и можно реализовать то же самое другим способом.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы