当DatePicker关闭时,jqgrid保存单元格编辑

我有以下JQGrid

$("#requestTable").jqGrid({ url: url, datatype: 'json', mtype: 'GET', altRows: 'true', colNames: ['id', 'Request Date', 'Name', 'HomePhone', 'Address', 'Contact Date', 'Email'], colModel: [ { name: 'Id', index: 'Id', hidden: true }, { name: 'RequestDate', index: 'RequestDate', width: 100 }, { name: 'FullName', index: 'FullName', width: 125, sortable: false }, { name: 'HomePhone', index: 'CabinetColor', width: 90, sortable: false }, { name: 'FullAddressString', index: 'ShellColor', width: 260, sortable: false }, { name: 'DealerContactDate', index: 'DealerContactDate', width: 105, editable: true, editoptions:{ dataInit:function(element){ $(element).datepicker(); } } }, { name: 'Email', index: 'Email', width: 110, sortable: false } ], cellEdit:true, cellurl:cellurl, pager: '#pager', rowNum: 50, rowList: [ 25, 50, 75, 100], sortname: 'id', sortorder: "desc", viewrecords: true, height: "100%" }); 

});

如您所见,DealerContactDate Cell可使用日期选择器进行编辑。 无论如何,只要在datepicker中选择了日期并且它关闭,jqgrid就会保存数据吗? 现在,使用必须从datepicker中选择一个日期。 然后再次选择该文本框并按Enter键,这太复杂了。 谢谢!

更新:我为jqrid外的行和单元创建了两个变量,然后在网格afterEditCell事件中设置这些变量。 然后在datepickers上onSelect事件将这些传递给saveCell函数,它似乎工作。

  var saverow = 0; var savecol = 0; $("#requestTable").jqGrid({ url: url, datatype: 'json', mtype: 'GET', altRows: 'true', colNames: ['id', 'Request Date', 'Name', 'HomePhone', 'Address', 'Contact Date', 'Email'], colModel: [ { name: 'Id', index: 'Id', hidden: true }, { name: 'RequestDate', index: 'RequestDate', width: 100 }, { name: 'FullName', index: 'FullName', width: 125, sortable: false }, { name: 'HomePhone', index: 'CabinetColor', width: 90, sortable: false }, { name: 'FullAddressString', index: 'ShellColor', width: 260, sortable: false }, { name: 'DealerContactDate', index: 'DealerContactDate', width: 105, editable: true, editoptions: { dataInit: function (element) { $(element).datepicker({ onSelect: function () { $("#requestTable").jqGrid("saveCell", saverow, savecol); } }); } } }, { name: 'Email', index: 'Email', width: 110, sortable: false } ], cellEdit: true, pager: '#pager', rowNum: 50, rowList: [25, 50, 75, 100], sortname: 'id', sortorder: "desc", viewrecords: true, height: "100%", cellurl: cellurl, afterEditCell: function (id, name, val, IRow, ICol) { saverow = IRow; savecol = ICol; } }); 

您应该能够将datePicker中的onSelect()事件与jqGrid中的saveRow()结合使用。 就像是:

  $(element).datepicker({ onSelect: function(dateText, inst) { var $input = inst.input; // the datepicker input var $row = $input.parents("tr"); $("#requestTable").jqGrid('saveRow',$row.attr("id"), false); // this would probably need some work, I have no experience with jqGrid }); 

嗨我有不同的问题。 即从datepicker中选择日期后的聚焦单元格。 我修复了它来自Answer1,尽管这个答案不是针对我的问题。 基本上,为了在jQGrid中选择日期后保持细胞聚焦, – 在Answerpickers onSelect()方法上触发’saveCell’事件,如Answer1所示。 – 在beforeEditCell方法中分配saveRow和saveCol变量。

谢谢大家。