jqgrid还原行不工作
我正在调试一些旧代码(joy),问题是restoreRow根本不工作,因此当用户单击行时(进入编辑模式),但用户没有更改任何内容,然后移动到下一行,上一行仍处于编辑状态,而不是还原状态。我不知道为什么会发生这种情况,所以任何见解都是受欢迎的jqgrid还原行不工作,jqgrid,restore,Jqgrid,Restore,我正在调试一些旧代码(joy),问题是restoreRow根本不工作,因此当用户单击行时(进入编辑模式),但用户没有更改任何内容,然后移动到下一行,上一行仍处于编辑状态,而不是还原状态。我不知道为什么会发生这种情况,所以任何见解都是受欢迎的 //at the beginning of the file var currentRowIdSelected; var prevRowIdSelected; var prevRowModified = false; $(gri
//at the beginning of the file
var currentRowIdSelected;
var prevRowIdSelected;
var prevRowModified = false;
$(grid).jqGrid({
url: als.common.getServerPath() + 'SamplesDefinitionAjax/SamplesDefinition',
editurl: als.common.getServerPath() + 'SamplesDefinitionAjax/UpdateSample',
datatype: 'local',
mtype: 'POST',
height: 516,
width: 1000,
caption: 'Samples',
hidegrid: false,
loadonce: true,
loadtext: 'Please wait,</br>loading samples...',
colModel: [
{ name: 'ClientBarcode', label: 'Client Barcode', sortable: false, width: 46 },
{
name: 'OrderNumber',
index: 'OrderNumber',
label: 'Seq #',
sortable: true, sorttype: 'integer',
width: 28
},
{
name: 'Description',
label: 'Description',
sortable: false,
editable: true,
editrules: { custom: true, custom_func: validateDescription }
},
{
name: 'Type',
index: 'Type',
label: 'Type',
sortable: true,
editable: true,
edittype: 'select',
width: 40,
align: 'center',
editoptions: {
dataUrl: als.common.getServerPath() + 'SamplesDefinitionAjax/GetTypes',
buildSelect: function (data) {
var response = jQuery.parseJSON(data);
var s = '<select id="samplestypefororder">';
if (response && response.length) {
s += '<option value="" disabled="disabled" ></option>';
$.each(response, function (index, elem) {
if ((elem.Tier === "1") || (elem.Tier === "N")) {
s += '<option data-tier="' + elem.Tier + '" value="' + elem.Type + '">' + elem.Type + '</option>';
}
});
s += '<optgroup label="Not Counted"><options>';
$.each(response, function (index, elem) {
if (elem.Tier === "Z") {
s += '<option data-tier="' + elem.Tier + '" data-parentTier="' + elem.parentTier + '" data-parentType="' + elem.parentType + '">' + elem.Type + '</option>';
}
});
s += '</options></optgroup><optgroup label="Other">';
$.each(response, function (index, elem) {
if ((elem.Tier === "2") || (elem.Tier === "B") || (elem.Tier === "S") || (elem.Tier === "D")) {
s += '<option data-tier="' + elem.Tier + '" data-parentTier="' + elem.parentTier + '" data-parentType="' + elem.parentType + '">' + elem.Type + '</option>';
}
});
s += '</optgroup>';
s += "</select>";
sampleTypesExcludedFromDup.length = 0;
$.each(response, function (index, elem) {
if (elem.Tier === "N") {
sampleTypesExcludedFromDup.push(elem.type);
}
});
}
return s + "</select>";
},
dataEvents: [
{ type: 'change', data: { test: 12 }, fn: sampletypechanged }
]
}
},
{ name: 'SampType', label: 'SampType', sortable: false, editable: false, hidden: true, width: 50 },
{
name: 'ReceivedWeight',
index: 'ReceivedWeight',
label: 'Received Weight',
sortable: true, sorttype: 'number',
editable: false, width: 32, align: 'right'
},
{ name: 'ReceivedDate', label: 'Received Date', sortable: false, editable: false, width: 40, align: 'center' },
{ name: 'SecurityTag', label: 'Security Tag', sortable: false, editable: true, width: 30 },
{ name: 'OriginalWorkorder', label: 'Original Workorder', sortable: false, editable: false, width: 60, hidden: true },
{ name: 'ClientStdName', label: 'Standard Name', sortable: false, editable: false, width: 40, hidden: false },
{ name: 'ClientStdType', label: 'Standard Type', sortable: false, editable: false, width: 30, hidden: true },
{ name: 'ParentOrderNumber', label: 'Duplicate #', sortable: false, editable: false, width: 50, hidden: false },
{ name: 'ParentSampDesc', label: 'Duplicate', sortable: false, editable: false, width: 30, hidden: true },
{ name: 'HasChildRef', label: 'HasChildRef', sortable: false, editable: false, width: 30, hidden: true },
{ name: 'Status', label: 'Status', sortable: false, editable: false, width: 30, hidden: true }
],
multiselect: true,
multiboxonly: true,
pager: pager,
pgbuttons: false,
pginput: false,
rowNum: -1,
rowattr: function (data) {
if (data.Status === 'Cancel') {
return { "class": "sampleCancelRow" };
} else return {};
},
loadComplete: function () {
var samples = $(grid).jqGrid('getRowData');
checkBarCodeMismatch(samples);
currentRowIdSelected = undefined;
prevRowIdSelected = undefined;
prevRowModified = false;
$('input#total_number_of_samples').trigger('notify.updateWoSampleCount');
// update the col number when click on a edit box.
$(grid).off('click', 'input[name="Description"]');
$(grid).off('click', 'input[name="SecurityTag"]');
$(grid).off('click', 'select[name="Type"]');
$(grid).on('click', 'input[name="Description"]', function () {
curCol = colnumSampdesc;
});
$(grid).on('click', 'input[name="SecurityTag"]', function () {
curCol = colnumSecuritytag;
});
$(grid).on('click', 'select[name="Type"]', function () {
curCol = colnumSampletype;
});
},
onCellSelect: function (row, col) {
curCol = col;
},
beforeSelectRow: function (rowid, e) {
// this is common to multiple grids and could go in a grid library
if (!e.ctrlKey && !e.shiftKey) {
$(this).jqGrid('resetSelection');
}
else if (e.shiftKey) {
var initialRowSelect = $(this).jqGrid('getGridParam', 'selrow');
$(this).jqGrid('resetSelection');
var currentSelectIndex = $(this).jqGrid('getInd', rowid);
var initialSelectIndex = $(this).jqGrid('getInd', initialRowSelect);
var startId;
var endId;
if (currentSelectIndex > initialSelectIndex) {
startId = initialRowSelect;
endId = rowid;
}
else {
startId = rowid;
endId = initialRowSelect;
}
var shouldSelectRow = false;
$.each($(this).getDataIDs(), function (_, id) {
if ((shouldSelectRow = id === startId || shouldSelectRow) && (id !== rowid)) {
$('#flagGrid').jqGrid('setSelection', id, false);
}
return id !== endId;
});
}
return true;
},
onSelectRow: function (id) {
currentRowIdSelected = id;
woOrdno = $(grid).jqGrid('getGridParam', 'selrow');
compPrevSampType = $(grid).find(' tr[id="' + currentRowIdSelected + '"]').find("td").eq(colnumSampletype).text();
if (prevRowIdSelected !== undefined) {
//$(grid).jqGrid('restoreRow', prevRowIdSelected);
//$(grid).restoreRow(prevRowIdSelected);
if (prevRowModified) {
//validate description
var descCellText = $("#" + prevRowIdSelected + "_Description", grid).val();
var test = [];
if (descCellText !== undefined) {
test = validateDescription(descCellText, 'Description');
} else { // the row was not in edit mode (user pressed entered before selecting new row)
descCellText = $(grid).find(' tr[id="' + prevRowIdSelected + '"]').find("td").eq(colnumSampdesc).text();
test = validateDescription(descCellText, 'Description', 1);
}
if (!test[0]) {
showErrorDialog(descCellText + ' ' + test[1]);
$(grid).resetSelection();
$(grid).setSelection(prevRowIdSelected, false);
return true;
}
//client barcode
var clientBarcodeCellText = $("#" + prevRowIdSelected + "_ClientBarcode", grid).val();
if (clientBarcodeCellText === undefined) {
clientBarcodeCellText = $(grid).find(' tr[id="' + prevRowIdSelected + '"]').find("td").eq(colnumClientBarcode).text();
}
$(grid).saveRow(prevRowIdSelected, {
url: als.common.getServerPath() + 'SamplesDefinitionAjax/UpdateSample',
extraparam: {
folderno: webview.workorder.woheader.model.woheader_folderno,
rowid: prevRowIdSelected,
ClientStdName: $(grid).find(' tr[id="' + prevRowIdSelected + '"]').find("td").eq(colnumClientstdname).text(),
ClientStdType: $(grid).find(' tr[id="' + prevRowIdSelected + '"]').find("td").eq(colnumClientStdType).text(),
ParentOrderNumber: $(grid).find(' tr[id="' + prevRowIdSelected + '"]').find("td").eq(colnumParentordernumber).text()
},
aftersavefunc: function () {
if (!reloadAfterSave(prevRowIdSelected)) {
var samples = $(grid).jqGrid('getRowData');
checkBarCodeMismatch(samples);
}
},
successfunc: function () {
if (reloadAfterSave(prevRowIdSelected)) {
reloadSampleDefinitions(webview.workorder.woheader.model.woheader_folderno);
}
else
prevRowModified = false;
return true;
},
errorfunc: function (rowid, response) {
$('<div>').html(response.responseText.split('\"')[3].split('\\')[0].substr(11))
.dialog({
modal: true, title: 'Server error',
buttons: { Close: function () { $(this).dialog('close'); } }
});
}
});
//TODO: revisit this
// $(grid).restoreRow(prevRowIdSelected);
} else {
$(grid).restoreRow(prevRowIdSelected);
}
}
var samplestatus = $(grid).getCell(currentRowIdSelected, 'Status');
if (samplestatus === 'Cancel') {
prevRowIdSelected = undefined;
return false;
}
$(grid).setColProp('Type', { editable: true });
$(grid).setColProp('SecurityTag', { editable: true });
var currentSampType = $(grid).getCell(currentRowIdSelected, 'SampType');
var currentType = $(grid).getCell(currentRowIdSelected, 'Type');
var currentOriginalWorkorder = $(grid).getCell(currentRowIdSelected, 'OriginalWorkorder');
if (currentSampType === 'PDU') {
$('#woEditSamplesErrormsg').text('You can not modify the PDU samples directly but you can delete them.');
$(editsampleserrordlg).dialog('open');
return true;
//} //else if (currentOriginalWorkorder !== '' && currentType && currentType.substring(0, 4).toUpperCase() !== 'PULP') {
// $('#woEditSamplesErrormsg').text('You can not modify these samples as this is a child workorder but you can delete them.');
// $(editsampleserrordlg).dialog('open');
// return true;
} else if (currentOriginalWorkorder !== '') {
$(grid).setColProp('Type', { editable: false });
$(grid).setColProp('SecurityTag', { editable: false });
}
if (compPrevSampType === 'Composite') {
$(grid).setColProp('ClientBarcode', { editable: true/*, editrules: { custom: true, custom_func: validateClientBarcode }*/ });
}
else {
$(grid).setColProp('ClientBarcode', { editable: false });
}
$(grid).editRow(currentRowIdSelected, {
keys: true,
successfunc: function () {
if (reloadAfterSave(currentRowIdSelected))
reloadSampleDefinitions(webview.workorder.woheader.model.woheader_folderno);
return true;
},
aftersavefunc: function () {
if (!reloadAfterSave(prevRowIdSelected)) {
var samples = $(grid).jqGrid('getRowData');
checkBarCodeMismatch(samples);
}
},
url: als.common.getServerPath() + 'SamplesDefinitionAjax/UpdateSample',
extraparam: {
folderno: webview.workorder.woheader.model.woheader_folderno,
rowid: currentRowIdSelected,
ClientStdName: $(grid).find(' tr[id="' + currentRowIdSelected + '"]').find("td").eq(colnumClientstdname).text(),
ClientStdType: $(grid).find(' tr[id="' + prevRowIdSelected + '"]').find("td").eq(colnumClientStdType).text(),
ParentOrderNumber: $(grid).find(' tr[id="' + currentRowIdSelected + '"]').find("td").eq(colnumParentordernumber).text()
},
restoreAfterError: false,
mtype: "POST",
errorfunc: function (rowid, response) {
$('<div>').html(response.responseText.split('\"')[3].split('\\')[0].substr(11))
.dialog({
modal: true, title: 'Server error',
buttons: { Close: function () { $(this).dialog('close'); } }
});
}
});
prevRowIdSelected = currentRowIdSelected;
if (id === '000') {
$("#" + id + "_Description", grid).attr('disabled', 'disabled');
$("#" + id + "_SecurityTag", grid).attr('disabled', 'disabled');
}
return id;
}
})
.navGrid(pager,
{
addtitle: 'Add sample',
addfunc: function () { addSample(); },
edit: false,
deltitle: 'Delete samples',
delfunc: function () { delSamples(); },
search: false,
refresh: false
},
//edit
{},
//add
{},
//delete
{},
//search
{},
//view
{})
.closest('div.ui-jqgrid-view').children('div.ui-jqgrid-titlebar').css('text-align', 'center').
children('span.ui-jqgrid-title').css('float', 'none');
$(grid).jqGrid('navButtonAdd', pager, {
buttonicon: 'ui-icon-copy-code',
caption: '',
title: 'Copy sample description from client barcode',
id: 'btnCopyCode',
onClickButton: copySampleDescToBarcode
});
$(grid).jqGrid('navButtonAdd', pager, {
buttonicon: 'ui-icon-copy-desc',
caption: '',
title: 'Copy sample description from other workorder',
id: 'btnCopyDesc',
onClickButton: openWorkordersDialogBox
});
$(grid).jqGrid('navButtonAdd', pager, {
buttonicon: 'ui-icon-clipboard',
caption: '',
title: 'Paste column from clipboard',
id: 'btnPaste',
onClickButton: pasteClipboard
})
.navSeparatorAdd(pager, { sepclass: 'ui-separator', sepcontent: '' });
$(grid).jqGrid('navButtonAdd', pager, {
buttonicon: 'none',
caption: btnBarcodeMisMatchCaptionFilter,
id: 'btnMismatches',
onClickButton: filterMismatches
})
.navSeparatorAdd(pager, { sepclass: 'ui-separator', sepcontent: '' });
$(grid).jqGrid('navButtonAdd', pager, {
buttonicon: "ui-icon-gedit-sample-type",
caption: "",
title: "Group edit sample type",
id: "btnGroupEditSampleType",
onClickButton: groupEditSampleType
});
};
//在文件的开头
var currentRowIdSelected;
var prevRowIdSelected;
var prevRowModified=false;
$(网格).jqGrid({
url:als.common.getServerPath()+'SampleDefinitionAjax/SampleDefinition',
editurl:als.common.getServerPath()+'SamplesDefinitionAjax/UpdateSample',
数据类型:“本地”,
mtype:“POST”,
身高:516,
宽度:1000,
标题:"样本",,
希德格里德:错,
有一次:是的,
loadtext:'请稍候,正在加载样本…',
colModel:[
{name:'ClientBarcode',label:'Client Barcode',sortable:false,width:46},
{
名称:“订单号”,
索引:“订单号”,
标签:“Seq#”,
sortable:true,sorttype:'integer',
宽度:28
},
{
名称:'说明',
标签:“说明”,
可排序:false,
是的,
editrules:{custom:true,custom_func:validateDescription}
},
{
名称:'类型',
索引:“类型”,
标签:“类型”,
可排序:是的,
是的,
edittype:'选择',
宽度:40,
对齐:'居中',
编辑选项:{
dataUrl:als.common.getServerPath()+“SampleDefinitionAjax/GetTypes”,
buildSelect:函数(数据){
var response=jQuery.parseJSON(数据);
var s='';
if(响应和响应长度){
s+='';
$。每个(响应、功能(索引、元素){
if((elem.Tier==“1”)| |(elem.Tier==“N”)){
s+=''+元素类型+'';
}
});
s+='';
$。每个(响应、功能(索引、元素){
如果(元素层==“Z”){
s+=''+元素类型+'';
}
});
s+='';
$。每个(响应、功能(索引、元素){
如果((elem.Tier==“2”)| |(elem.Tier==“B”)| |(elem.Tier==“S”)| |(elem.Tier==“D”)){
s+=''+元素类型+'';
}
});
s+='';
s+=”;
sampleTypesExcludedFromDup.length=0;
$。每个(响应、功能(索引、元素){
如果(元素层==“N”){
样本类型包括重复推送(元素类型);
}
});
}
返回s+“”;
},
数据事件:[
{type:'change',数据:{test:12},fn:sampletypechanged}
]
}
},
{name:'SampType',label:'SampType',sortable:false,editable:false,hidden:true,width:50},
{
名称:'ReceivedWeight',
索引:“接收重量”,
标签:“收到重量”,
sortable:true,sorttype:'number',
可编辑:false,宽度:32,对齐:“右”
},
{name:'ReceivedDate',label:'receivedate',sortable:false,editable:false,width:40,align:'center'},
{name:'SecurityTag',label:'Security Tag',sortable:false,editable:true,width:30},
{name:'OriginalWorkorder',label:'OriginalWorkorder',sortable:false,editable:false,width:60,hidden:true},
{name:'ClientStdName',label:'Standard name',sortable:false,editable:false,width:40,hidden:false},
{name:'ClientStdType',label:'Standard Type',sortable:false,editable:false,width:30,hidden:true},
{name:'ParentOrderNumber',label:'Duplicate#',sortable:false,editable:false,width:50,hidden:false},
{name:'ParentSampDesc',label:'Duplicate',sortable:false,editable:false,width:30,hidden:true},
{name:'HasChildRef',label:'HasChildRef',sortable:false,editable:false,width:30,hidden:true},
{name:'Status',label:'Status',sortable:false,editable:false,width:30,hidden:true}
],
多选:对,
multiboxonly:正确,
寻呼机:寻呼机,
PG按钮:错误,
pginput:false,
rowNum:-1,
rowattr:函数(数据){
如果(data.Status==“取消”){
返回{“类”:“sampleCancelRow”};
}else返回{};
},
loadComplete:函数(){