Редактиране на клетка в jqGrid

Редактирането на клетка позволява на потребителя да променя съдържанието на една клетка подред, след което разработчикът има способността да обработва промени в данните с помощта на AJAX или в манипулатора на събития за редактиране на клетка (вижте по-долу).

Редактиране на клетки поддържа навигация с клавиатура и редактиране на една клетка със следното поведение:

  • Когато щракнете върху нередактируема клетка, клетката се маркира и можете да използвате левия и десния бутон за навигация през клетките.
  • Когато се премествате в клетка, която се редактира, можете да натиснете клавиша Enter, за да започнете да редактирате. Стойността в клетката се запазва, когато натиснете отново Enter, когато натиснете Tab или когато щракнете върху друга клетка. Когато натиснете Esc, клетката не се запазва. Когато редактирате клетка, клавишите със стрелки се движат само в клетката.
  • Когато кликнете върху редактируема клетка, ние веднага влизаме в режим на редактиране.
  • Клетката не може да се редактира, ако има клас 'not-editable-cell', вместо да задава свойството за редактиране в colModel.

За да използвате този модул, трябва да проверите Редактиране на клетки и Общи модули, когато изтегляте таблицата. Вижте статията "Инсталиране на jqGrid".

Разработчиците на приставки JQuery могат да използват файла grid.celledit.js в директорията src.

Свойствата, събитията и методите, използвани при редактиране на клетка, са изброени по-долу:

Тези свойства са специфични за редактирането на клетки и трябва да бъдат зададени в свойствата на таблицата.

Имот: cellEdit
Тип: булев
Активира/деактивира редактирането на клетки. Ако това свойство е зададено на true, тогава събитието onSelectRow не може да се използва и задържането е забранено (при преместване на курсора на мишката върху редове).
По подразбиране: невярно

Имот: клетъчно изпращане
Тип: низ
Определя къде да се запази съдържанието на клетката. Може да бъде една от двете стойности: 'remote' или 'clientArray' .
Ако е „отдалечен“, тогава съдържанието на клетката, ако се промени, незабавно се записва на сървъра с помощта на свойството cellurl и заявка AJAX. Идент. Ред и съдържанието на клетката се добавят към url по подразбиране. Ако свойството "mtype" е зададено на "POST", тогава двойките ключ-стойност се изпращат като параметри на заявката POST. Например, ако запазим клетка с име mycell, тогава < id: rowid, mycell: cellvalue >добавен към url.
Ако свойството cellubmit е зададено на 'clientArray', тогава не се изпращат заявки за AJAX и съдържанието на променената клетка може да бъде извлечено с помощта на метода getChangedCells или с помощта на събитието.
По подразбиране: "дистанционно"

Имот: cellurl
Тип: низ
URL за запазване на съдържанието на клетката. Това свойство трябва да се задава само когато cellubmit: 'отдалечен' .
По подразбиране: нула

Имот: ajaxCellOptions
Тип: обект
Това свойство ви позволява да зададете глобални настройки на AJAX за изпращане на данни към сървъра в режим на редактиране на клетки. Имайте предвид, че това свойство може да се използва за отмяна на всички текущи настройки на AJAX в заявката за запис, включително цялото събитие.
По подразбиране: празен обект

Когато използвате опцията „отдалечено“, можете да добавите следните редове към конфигурацията на таблицата:

Когато използвате ‘clientArray’ като свойство cellubmit, важни са само тези свойства:

Тези събития са свързани с редактиране на клетки и трябва да се използват в свойствата на таблицата.

Много от тези събития използват следните параметри:

  • rowid - идентификаторът на реда
  • cellname - име на клетка (име от colModel)
  • стойност - стойността в клетката
  • iRow - индекс на редове (да не се бърка с rowid)
  • iCol - индекс на колона

Събитие: afterEditCell
Параметри: rowid, име на клетка, стойност, iRow, iCol
Прилага се само за клетки, които могат да бъдат редактирани. Възниква след редактиране на клетка, тоест след вмъкване на елемент в DOM.

Събитие: afterRestoreCell
Тип: rowid, стойност, iRow, iCol
Прилага се само за клетки, които могат да бъдат редактирани. Възниква след извикване на метода restoreCell или потребителят натиска клавиша Esc, за да отхвърли промените.

Събитие: afterSaveCell
Параметри: rowid, име на клетка, стойност, iRow, iCol
Прилага се само за клетки, които могат да бъдат редактирани. Възниква след успешно запазване на клетка. Перфектното място за промяна на друго съдържание.

Събитие: afterSubmitCell
Параметри: сървър отговор, rowid, име на клетка, стойност, iRow, iCol
Прилага се само за клетки, които могат да бъдат редактирани. Възниква след изпращане на данни към сървъра. Трябва да върне масив от формата [успех (булево), съобщение]. Ако връща [true, "], значи всичко е наред и съдържанието е запазено успешно. Ако връща [false, „Съобщение за грешка“], тогава се появява диалогов прозорец със „Съобщение за грешка“ и съдържанието не се запазва. Параметърът на сървърния отговор е отговорът на сървъра. Трябва да използвате serverresponse.responseText, за да получите текстово съобщение от сървъра.