在我的jqGrid中,onSelect函数如果列单元格不是空字符串,我会在特定列上设置dataEvent。
只要编辑特定单元格具有值的行,就不会在列上设置dataEvent。这是理想的行为。
再次,如果我编辑一个单元格为空并且dataEvent绑定到该列的行。这也是理想的行为。
但是,一旦执行了第二个senerio,即使检查单元格有值,dataevent似乎也会锁定到该列。
我的onSelect代码:
function oSelect(id){
var vjobno = "";
vjobno = $("#timesheetlineitemsqueue").getRowData(id)['jobno'];
$("#timesheetlineitemsqueue").setColProp('date', { editoptions: { dataUrl: '/TimeSheetWebApp/TimeSheetControllerServlet?lifecycle=weekdayoptions'}});
$("#timesheetlineitemsqueue").setColProp('deptno', { editoptions: { dataUrl: '/TimeSheetWebApp/TimeSheetControllerServlet?lifecycle=departmentoptions'}});
$("#timesheetlineitemsqueue").setColProp('iphase', { editoptions: { dataUrl: '/TimeSheetWebApp/TimeSheetControllerServlet?lifecycle=phaseoptions'}});
$("#timesheetlineitemsqueue").setColProp('icategory', { editoptions: { dataUrl: '/TimeSheetWebApp/TimeSheetControllerServlet?lifecycle=categoryoptions'}});
if(vjobno == ""){
$("#timesheetlineitemsqueue").setColProp('jobno', { editoptions: {dataEvents: [{ type: 'click', fn: function(e) {resetvalidation(this.name); }},{ type: 'focus', fn: function(e) {resetvalidation(this.name); }},{ type: 'change', fn: function(e) {validatejobnumber(this.value); }},]}});
}
};
答案 0 :(得分:1)
了解getGridParam
将引用返回给jqGrid使用的内部参数非常重要。因此,您可以使用例如
var p = $("#timesheetlineitemsqueue").jqGrid("getGridParam");
并使用colModel
访问p.colModel
。或者你可以使用
var colModel = $("#timesheetlineitemsqueue").jqGrid("getGridParam", "colModel");
获取对colModel
数组的引用。
要获取名称为jobno
的列项,可以在free jqGrid中使用iColByName
。然后
var cm = p.colModel[p.iColByName.jobno];
如果您使用某些旧版本的jqGrid而不是免费的jqGRid,那么您可以在循环中找到jobno
的索引(例如,参见the answer中getColumnIndexByName
的代码)。
现在,您可以设置cm
项的任何属性,而不使用setColProp
。以同样的方式,您可以使用delete
删除该属性。例如
delete cm.editoptions.dataEvents;