由於字段較多,但可供用戶修改的 字段僅有一個,所有不想通過彈出對話框的方式讓用戶進行修改。還好jqgrid支持行內數據修改,首先要將cellEdit設為true以支持對單元格的 修改操作。這里講cellsubmit設為clientArray,當修改完成后並不直接發送到服務器進行保存,而是先保存在table中,當用戶點擊保 存按鈕是才向數據庫發送請求更新數據。
cellEdit: true, cellsubmit: "clientArray", //當單元格發生變化后不直接發送請求、"remote"默認直接發送請求
要修改的字段是select類型:
{name:'YCFWZT',index:'YCFWZT', width:80,align:"center",sortable:false,formatter:'select', formatoptions:{value:{1:'正常', 2:'維修', 3:'常用'}}, editable:true,edittype:'select',editoptions:{value:{1:'正常', 2:'維修', 3:'常用'}}},
這里有一個問題,就是當用戶修改該字段后直接進行保存操作,由於修改后的數據未保存到table中,而且原數據丟失,會導致字段為空。所以要先設法 使被編輯的單元格失去焦點,數據即可保存到本地table中。這里當用戶點擊保存按鈕后首先讓每行的第一個字段獲取焦點,這樣數據就會得到保存,然后進行 保存操作:
$("#list2").editCell(rowid, 1, true);
onSelectRow: function(id){ if(id && id!==lastsel2){ jQuery('#detailStatisticsTab').jqGrid('saveRow',lastsel2); //$('#detailStatisticsTab').restoreRow(lastsel2); jQuery('#detailStatisticsTab').jqGrid('editRow',id,true); //jQuery('#gridid').editRow(id, true); lastsel2=id; } }
jqGrid重置
$('#detailStatisticsTab').trigger("reloadGrid"); // 重新載入
jqGrid遍歷所有行
var rowIds = $("#detailStatisticsTab").jqGrid('getDataIDs');
var paraArr = [];
for(var i=0,j = rowIds.length - i;i < j; i++) { var rowData = $("#detailStatisticsTab").jqGrid('getRowData',rowIds[i]); var MC_STATE_NAME = rowData.MC_STATE_NAME; var MC_STATE = rowData.MC_STATE;var param = { MC_ID: rowData.MC_ID, MC_STATE: MC_STATE }; //paraArr.push(param); paraArr.push(JSON.stringify(param)); } }
