Я новичок в jqGrid
и создал простую сетку с локальными данными с editurl
, установленную на clientArray
. Я использую встроенную навигацию. Я могу редактировать строку, и когда я нажимаю кнопку сохранения, строки обновляются. Все идет нормально.jqgrid встроенная экономия с clientArray throws error
Когда я нажимаю кнопку добавления строки, вводится новая пустая строка. Когда я ввожу там некоторые данные и нажмите на кнопку Сохранить, я получаю сообщение об ошибке:
Uncaught TypeError: Cannot read property 'extraparam' of undefined jquery.jqGrid.min.js:398
Документация говорит лишь о том, как метод saveRow
должен быть вызван. Но, по-видимому, встроенный навигатор вызывает его автоматически. Это прекрасно. Но я думаю, мне все равно нужно правильно установить некоторые параметры, чтобы он не выдавал ошибку и не сохранял вновь добавленную строку.
Надежда какая-то jqGrid
гуру имеет хороший совет. Благодарю.
function createTable(data,colNames,colModel,caption){
...
$(table).jqGrid({ data:data,
datatype: "local",
height: 'auto',
colNames:colNames,
pager:'#'+pagerid,
colModel:colModel,
viewrecords: true,
caption:caption,
editurl:'clientArray',
});
var nav = $(table).jqGrid('navGrid','#'+pagerid,{edit:false,add:false,del:false});
$(table).jqGrid('inlineNav','#'+pagerid);
$(table).jqGrid('gridResize',{minWidth:350,maxWidth:800,minHeight:80, maxHeight:350});
$('#gbox_'+tableid).draggable();
}
Вы могли бы написать, какую версию jqGrid используете? Вам нужно повторить тест, используя 'jquery.jqGrid.src.js' вместо минимизированной версии' jquery.jqGrid.min.js'. Номер строки в 'jquery.jqGrid.src.js' может быть полезен, но не в jquery.jqGrid.min.js'. Кроме того, было бы полезно, если вы отправляете параметры, если 'createTable', которые вы используете для воспроизведения проблемы. Вы должны понимать, что данные 'colModel: colModel': data' почти совпадают с публикацией кода' myProgram() '. Такой «код» не содержит никакой информации. – Oleg
Привет, Олег, Спасибо за быстрый ответ. Я повторю тест с jquery.jqGrid.src.js, как вы предложили, и сообщите об этом. Тем временем я выяснил, что изменение $ (таблица) .jqGrid ('inlineNav', '#' + pagerid); $ (таблица) .jqGrid ('inlineNav', '#' + pagerid, {edit: true, add: true, editParams: {key: true}, addParams: {addRowParams: {key: true}} }); работает для меня. Сохранение работает даже с editParams: {} и addRowParams: {}, но, конечно, только с кнопкой, а не с ключом. Интересно, почему важно передать пустой объект. – user2297539
@Oleg: console.log (JSON.stringify (data)) дает [{"P0": "строка 0 ячейка 0", "P1": "строка 0 ячейка 1", "P2": "строка 0 ячейка 2" }, {«P0»: «строка 1 ячейка 0», «P1»: «строка 1 ячейка 1», «P2»: «строка 1 ячейка 2»}, {«P0»: «строка 2 ячейка 0», P1 ":" строка 2 ячейка 1 "," P2 ":" строка 2 ячейка 2 "}] console.log (colNames) дает [" P0 "," P1 "," P2 "] console.log (JSON.stringify (colModel)) дает [{"name": "P0", "index": "P0", "width": 150, "editable": true}, {"name": "P1", "index ":" P1 "," width ": 150," editable ": true}, {" name ":" P2 "," index ":" P2 "," width ": 150," editable ": true}] caption is 'the table title' Я тестировал его с помощью jquery.jqgrid.src.js. Я получаю ту же ошибку (l. 9530). – user2297539