struts 2 использует jqGrid для получения данных строки перед форматированием

Я хочу получить данные jGrid после их загрузки.

Некоторые столбцы имеют средство форматирования, но я хочу получить их исходные данные перед форматированием.

Столбцы сетки:

<sjg:gridColumn name="accountNo" formatter="linkBulider" />
<sjg:gridColumn name="amount" />

Я использую ниже js:

var allRowsInGrid = $('#gridtable').jqGrid('getRowData');
for (i = 0; i < allRowsInGrid.length; i++) {
   //For accountNo I get the formmated value 
   allRowsInGrid[i].accountNo;
   //The amount is ok as it is unformated
   allRowsInGrid[i].amount;
}

person Alireza Fattahi    schedule 07.02.2016    source источник


Ответы (1)


Согласно wiki getRowData не возвращает фактические данные из сетка.

Возвращает массив с данными запрошенного id = rowid. Возвращаемый массив имеет тип name:value, где имя — это имя из colModel и значение из связанного столбца в этой строке. Он возвращает пустой массив, если rowid не может быть найден.

  1. Не используйте этот метод при редактировании строки или ячейки. Это вернет содержимое ячейки, а не фактическое значение элемента ввода.
  2. Производительность этого метода становится проблемой. Не используйте этот метод в теле «для» и «когда». (При вызове этого метода данные строки вычисляются один раз.)

Если rowid не установлен, метод возвращает все данные из сетки в массив

После того как вы использовали параметр настраиваемый formatter для форматирования содержимого ячейки, вам нужна возможность отформатировать данные.

Возникает вопрос: что делать, если мы используем пользовательскую функцию formatter и хотим вернуть исходное значение, если мы используем редактирование или методы getRowData и getCell?

Ответ таков: для этого вы можете использовать свою собственную функцию unformatter. Эту функцию можно использовать в colModel.

На этом этапе вы можете проверить, можно ли установить атрибут sjg:gridColumn для определения функции unformat. К сожалению, вы не можете сделать это в соответствии с TLD.

Однако вы можете изменить сетку после ее загрузки.

$(document).ready(function(){
 $("#gridtable").jqGrid('setColProp', 'accountNo',{
    unformat: unformatFunc
  }).trigger("reloadGrid");
}); 
person Roman C    schedule 07.02.2016
comment
unformat это то, что я искал, спасибо! - person Alireza Fattahi; 07.02.2016