我試圖獲得一個jQuery的jqgrid啓動和運行的實現。一切都很順利,除了saveCell函數我試着打電話。我希望我的插件可以隨時編輯任何* _fee字段,我希望小計和總字段也能自動更新。我已經使用getCell和setCell進行了視覺更新工作,但saveCell無法正常工作。 saveCell()實際上並沒有將字段數據傳遞給我的PHP腳本。已編輯的費用字段的初始保存工作正常,但小計字段和總字段自動切換後的ajax請求尚未完成。我得到id和oper字段,但不是我實際改變的字段!jqgrid saveCell問題
這裏是我的代碼:
$("#cust_grid").jqGrid({
url:'/ajax/grid',
datatype: 'xml',
mtype: 'POST',
colNames:['ID','Company', 'Sales','Credits','Voids','Declines','Total Trans','Monthly Fee','Trans Fee','Misc Fee','Subtotal','Total'],
colModel :[
{name:'id', index:'id', width:55, search: true},
{name:'company', index:'company', width:100, search: true},
{name:'sales', index:'sales', width:70, search: true},
{name:'credits', index:'credits', width:70, search: true},
{name:'voids', index:'voids', width:70, search: true},
{name:'declines', index:'declines', width:70, search: true},
{name:'total_trans', index:'total_trans', width:70, align:'right', search: true},
{name:'monthly_fee', index:'monthly_fee', width:90, align:'right', editable: true, search: true, formatter: 'number'},
{name:'trans_fee', index:'trans_fee', width:70, align:'right', editable: true, search: true, formatter: 'number'},
{name:'misc_fee', index:'misc_fee', width:70, align:'right', editable: true, search: true, formatter: 'number'},
{name:'subtotal', index:'subtotal', width:90, align:'right', search: true},
{name:'total', index:'total', width:90, align:'right', search: true}
],
pager: '#pager',
rowNum:25,
rowList:[10,25,50,100],
sortname: 'id',
sortorder: 'asc',
viewrecords: true,
gridview: true,
caption: 'Our Customers',
height: 600,
altRows: true,
cellEdit: true,
cellsubmit: "remote",
cellurl: "/ajax/editCell",
afterSaveCell: function (rowid, cellname, value, iRow, iCol) {
var transFee = $('#cust_grid').jqGrid('getCell', rowid, 'trans_fee');
var totalTrans = $('#cust_grid').jqGrid('getCell', rowid, 'total_trans');
var subtotal = transFee * totalTrans;
subtotal = subtotal.toFixed(2);
//alert(subtotal);
var monthlyFee = $('#cust_grid').jqGrid('getCell', rowid, 'monthly_fee');
//alert(monthlyFee);
var total = Number(subtotal) + Number(monthlyFee);
//alert(total);
total = total.toFixed(2);
$('#cust_grid').jqGrid('setCell', rowid, 'subtotal', subtotal);
alert("iRow=" + iRow + " iCol=" + iCol);
$('#cust_grid').jqGrid('saveCell', iRow, 10);
alert("cell saved!");
$('#cust_grid').jqGrid('setCell', rowid, 'total', total);
$('#cust_grid').jqGrid('saveCell', iRow, 11);
}
});
$("#cust_grid").jqGrid('navGrid','#pager',
{edit:false,add:false,del:false,search:true},{},{},{},
{
closeAfterSearch:true,
closeOnEscape:true,
},
{}
);
});
第一個Ajax請求包括:
Array
(
[trans_fee] => 15.13
[id] => 1
[oper] => edit
)
但後續Ajax請求只包含:
Array
(
[id] => 1
[oper] => edit
)
由於後續Ajax請求不要不包含實際更改的字段數據,我無法保存!有沒有人有這個提示?謝謝!
奧列格,那麼你會怎麼做呢?我希望小計和總字段在更新任何* _fee字段時自動更新和保存。有沒有不同的方法,我應該使用,而不是saveCell?或者我應該有一個完全不同的策略? – Erreth
@Erreth:您應該只使用[jQuery.ajax](http://api.jquery.com/jQuery.ajax/)或一些簡化形式,如[jQuery.post](http://api.jquery.com/ jQuery.post /)發送任何數據到服務器。所以我建議你將'setCell'後的'saveCell'調用替換爲'$ .ajax'或'$ .post'。 – Oleg