我是jqGrid的新手,所以希望有人能指出我正確的方向。如何在使用jqGrid'editGridRow'創建新行而不是自動生成的行ID時提供行ID jqg1
基本上,我使用jgGrid來顯示一個日期和費用的列表,我已經從一個文件中讀取,我希望用戶能夠修改或添加新條目或刪除現有條目。當用戶點擊屏幕上的按鈕「應用」來回發表單時,我讀出了jqGrid並以JSON字符串的形式返回給服務器。
我的問題是,當我添加新行(通過'editGridRow')時,jqGrid使用它的自動生成jqg1,jg2,jg3等,並且新行被填充在網格的頂部而不是在他們的行ID位置,即在網格的底部。
我能夠根據需要生成RowID,但是我似乎無法在創建新條目時將它們提供給'editGridRow',相反它似乎不得不使用關鍵字「new」。
您知道我使用editGridRow而不是addRowData的原因是editGridRow爲用戶輸入數據創建了一個模式對話框。
任何幫助,將不勝感激。
This is what I would like to use to supply a row ID: $("#tableGrid").jqGrid('editGridRow', gridRowID, {reloadAfterSubmit:false});
This is what I have to use to get the code to work: $("#tableGrid").jqGrid('editGridRow', "new", {reloadAfterSubmit:false});
這裏是代碼片段我用我的JSP創建gqGrid:
var gridRowID = ${costHistoryEntries}.length
$("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」作爲一種替代方式使用jqGrid Navigator「添加/編輯/刪除/查找/重新加載」欄添加一個新行。正如您在加載網格之前所看到的那樣,我在gridRowID中存儲了條目的數量。我希望能夠在「#addEntry」單擊函數中執行的操作是使用更新後的gridRowID作爲RowID參數。
作爲FYI: 在先前版本的代碼我用下面的數據加載到網格:
var griddata = ${costHistoryEntries};
for (var i=0; i <= griddata.length; i++) {
$("#tableGrid").jqGrid('addRowData', i+1, griddata[i], "last");
}
卻發現我能做到這同樣與
data: ${costHistoryEntries},
兩個版本都正確地爲服務器提供的示例數據創建行ID: [{「chdate」:「20/05/2011」,「cost」:「0.111」},{「chdate」:「01/06 /2011","cost":"0.222"},{"chdate":"07/07/2011","cost":"0.333「}]
我的問題是添加新的數據行。
進一步更新在服務器端,作爲一個測試,我截獲了帖子到/ myurl並將id從「_empty」更新爲「7」,但jqGrid中的新條目仍然有一個自動生成的jqGrid行ID「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
確認數據是否來自'/ myurl'的服務器對'oper =「add」'和'id =「_ empty」作爲參數的響應?服務器響應應該只是「7」。 「Content-Type」具有服務器響應可能更爲重要。 – Oleg