jqGrid: отключить поля формы при редактировании

В настоящее время я занимаюсь разработкой веб-приложения, предназначенного для администрирования торговых автоматов и тому подобного. Я решил использовать jQuery, jQuery UI и jqGrid для этого проекта, поэтому я могу легко предоставить отличный и настраиваемый пользовательский интерфейс.
К сожалению, документация jqGrid довольно устарела и не охватывает все функции этого замечательного плагина (потому что он мне действительно нравится, хотя документация довольно скудная).

В любом случае, достаточно справочной информации, я полагаю. Давайте перейдем к сути:
Я использую панель навигации, встроенную в jqGrid, чтобы добавлять, редактировать и удалять элементы из сетки.
У меня это работает как шарм, за исключением одного: некоторые поля могут быть включены (или видимы) только при добавлении нового элемента, а не в режиме редактирования (они должны быть скрыты и / или отключены).

Пример:
Компания, в которой я работаю, продает торговые башни и Есть несколько типов (разные размеры и прочее) этих башен. когда новая башня добавляется к локации и введен в систему, тип должен быть установлен. Но башня не волшебным образом меняется со временем, так что это поле не может быть отредактировано позже.

Кто-нибудь знает, может ли это поведение быть достигнуто путем изменения некоторых параметров инициализации?
Возможно, это недокументированная опция редактирования ( editoptions ) или опция формы ( formoptions )?
Или, может быть, у вас есть простое решение для этого?

Я хотел бы услышать ваше предложение / решения!
Спасибо =)

17
задан Jarrod Dixon 22 March 2012 в 01:17
поделиться

1 ответ

Вы можете реализовать свои требования по-разному. Например, внутри события beforeShowForm вы можете скрыть или показать

jQuery("#list").jqGrid({
    colModel: [
        { name: 'Name', width: 200, editable: true },
   //...

}).jqGrid('navGrid','#pager', { edit: true, add: true, del: false},
          { // edit option
              beforeShowForm: function(form) { $('#tr_Name', form).hide(); }
          },
          { // add option
              beforeShowForm: function(form) { $('#tr_Name', form).show(); }
          });

, где идентификатор «tr_Name» состоит из префикса «tr_», а «Name» - свойства имени столбца из colModel .

ОБНОВЛЕНО : в ответ и в еще один показан еще один способ динамического изменения свойств непосредственно перед инициализацией редактирования.

ОБНОВЛЕНО 2 : Free jqGrid позволяет определить редактируемый как функцию обратного вызова или как «отключено» , «скрыто» или «только чтение» . См. статью в вики . Это позволяет легче реализовать те же требования.

36
ответ дан 30 November 2019 в 11:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: