2015-03-25 4 views
3

Таким образом, поведение по умолчанию для кнопки редактирования внутри каждой строки jqGrid заключается в том, чтобы открыть форму на той же странице, не так ли?настроить jqGrid кнопку редактирования внутри строки, чтобы открыть новый вид

Мне нужно его открыть другой вид, другой URL.

Мне удалось сделать это с помощью кнопки редактирования, которая находится в пэдже сетки, используя метод .navButtonAdd. Но я не могу понять, как сделать то же самое для кнопок строк.

Может ли кто-нибудь помочь мне, пожалуйста?

ответ

1

jqGrid не предоставляет в настоящее время простой способ заменить вызов редактирования на другой метод или включить пользовательскую кнопку. Что вы можете сделать в качестве альтернативы, это «подклассы» $.fn.fmatter.rowactions, как описано в the answer. Функция $.fn.fmatter.rowactions будет вызываться при нажатии любой из кнопок действий. Таким образом, вы можете проверить, является ли параметр act"edit" или нет. В случае кнопки "edit" вы можете переадресовать вызов на функцию $.fn.fmatter.rowactions. В случае кнопки "edit" вы можете выполнить любое свое действие.

ОБНОВЛЕНО: Конкретная реализация зависит немного от версии jqGrid, которые вы используете, так как параметры и значение this функции $.fn.fmatter.rowactions различны для разных версий jqGrid. Я создал для вас the demo, который использует free jqGrid 4.8 (см. readme и wiki). Я использовал следующий код для подклассов

var orgRowActions = $.fn.fmatter.rowactions; 
$.fn.fmatter.rowactions = function (e, act) { 
    var $grid = $(this).closest("table.ui-jqgrid-btable"), 
     rowid = $(this).closest("tr.jqgrow").attr("id"); 

    if (act === "edit") { 
     $grid.jqGrid("viewGridRow", rowid); 
     return false; 
    } 
    return orgRowActions.call(this, e, act); 
} 

В результате кнопка «Edit» начинается «View» вместо формы редактирования.

Я планирую включить дополнительные возможности настройки в следующую версию бесплатного jqGrid. Таким образом, вы сможете создать пользовательский встроенный значок без трюков с подклассом.

+1

Спасибо, что помогли мне, Олег. Я думаю, что я делаю что-то неправильно. Извините, это неясно для меня:/ Основываясь на ссылке, которую вы опубликовали, я делаю это: 'var orgRowActions = $ .fn.fmatter.rowactions; $ .fn.fmatter.rowactions = function (rid, gid, act, pos) { var $ grid = $ ("#" + $ .jgrid.jqID (gid)), rowData = $ grid.jqGrid (" getLocalRow ", rid), isNonEditable = false, результат; if (act === "edit") { window.location = myURL; } результат = orgRowActions.call (это, rid, gid, act, pos); результат возврата; } ' Любые мысли о том, где я ошибаюсь? –

+2

@LucasGabriel: Я создал демо для вас, что демонстрирует реализацию. См. ** ОБНОВЛЕНО ** часть моего ответа. – Oleg

+0

большое вам спасибо! вот и все. Я использую версию 4.6.0, и параметры разные. он работает отлично! –

Смежные вопросы