Я новичок в jqGrid, так что, надеюсь, кто-то может указать мне правильное направление.
В основном, я использую jgGrid для отображения списка дат и затрат, которые я прочитал из файла, которыйЯ хочу, чтобы пользователь мог изменять или добавлять новые записи или удалять существующие записи.После того, как пользователь нажал на экранную кнопку «Применить», чтобы отправить обратно форму, я зачитал jqGrid и отправил обратно на сервер в виде строки JSON.
Моя проблема в том, что когда я добавляю новые строки (через 'editGridRow'), jqGrid использует автоматически генерируемые jqg1, jg2, jg3 и т. Д., И новые строки заполняются в верхней части сетки, а не в ихпозиция идентификатора строки, т.е. в нижней части сетки.
Я могу генерировать RowID по мере необходимости, однако я не могу предоставить их для editGridRow при создании новых записей, вместо этого, кажется, у меня естьиспользовать ключевое слово «новый».
Как вы знаете, причина, по которой я использую editGridRow вместо addRowData, заключается в том, что editGridRow создает модальный диалог для ввода данных пользователем.
Любая помощь будет принята.
This is what I would like to use to supply a row ID:
$("#tableGrid").jqGrid('editGridRow', gridRowID, {reloadAfterSubmit:false});</p>
<p>This is what I have to use to get the code to work:
$("#tableGrid").jqGrid('editGridRow', "new", {reloadAfterSubmit:false});
Вот фрагмент кода, который я использую для создания gqGrid в моем JSP:
var gridRowID = ${costHistoryEntries}.length</p>
<pre><code> $("document").ready(function() {
$("#tableGrid").jqGrid({
data: ${costHistoryEntries},
datatype: "local",
height: 200,
colNames:['Date', 'Cost'],
colModel:[
{name:'chdate', index:'chdate', width:110, sorttype:"date", editable:true, editrules:{date:true, required:true, custom:true, custom_func:checkDate}, datefmt:'d/m/Y'},
{name:'cost', index:'cost', width:160, align:"right", sorttype:"float", editable:true, editrules:{number:true, required:true}, formatter:'float'},
],
autowidth: true,
loadonce: true,
sortname: 'chdate',
sortorder: "desc",
rowList:[10, 20, 30],
pager: jQuery('#tablePager'),
viewrecords: true,
editurl: '/myurl',
caption: "Cost History Entries" }
);
$("#tableGrid").jqGrid('navGrid', "#tablePager", {edit:true, add:true, del:true, search:true, refresh:true});
$("#addEntry").click(function() {
gridRowID++;
$("#tableGrid").jqGrid('editGridRow', "new", {reloadAfterSubmit:false});
});
});
Я также создал кнопку и связал ее с «addEntry» в качестве альтернативного способа добавления новой строки с помощью панели «add / edit / delete / find / reload» jqGrid Navigator.Как вы можете видеть до загрузки сетки данными, я сохранил количество записей в gridRowID.То, что я надеялся сделать в функции щелчка "#addEntry", это использовать обновленный gridRowID в качестве параметра RowID.
В качестве справки: в предыдущей версии кода я использовал следующее длязагрузить данные в сетку:
var griddata = ${costHistoryEntries};
for (var i=0; i <= griddata.length; i++) {
$("#tableGrid").jqGrid('addRowData', i+1, griddata[i], "last");
}
, но обнаружил, что я могу сделать то же самое с
data: ${costHistoryEntries},
Обе версии правильно создают идентификаторы строк для предоставленных образцов данных с сервера: [{ "chdate": "20/05/2011", "стоимость": "0,111"}, { "chdate": "01/06/2011", "стоимость": "0,222"}, { "chdate":»07.07.2011 "," cost ":" 0.333 "}]
Моя проблема заключается в добавлении новых строк данных.
Дальнейшее обновление, на стороне сервера, в качестве теста, который я перехватилсообщение в / myurl и обновил идентификатор с "_empty" до "7", но новая запись в jqGrid все еще имеет автоматически сгенерированный идентификатор строки jqGrid "jqg1":
Key = chdate, Value = 26/09/2011
Key = oper, Value = add
Key = cost, Value = 14
Key = id, Value = _empty
Updated Key = chdate, Value = 26/09/2011
Updated Key = oper, Value = add
Updated Key = cost, Value = 14
Updated Key = id, Value = 7