从列中删除jqGrid editoptions

时间:2015-12-23 19:41:17

标签: javascript java jquery jqgrid

在我的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);  }},]}});
        }           
    };

1 个答案:

答案 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 answergetColumnIndexByName的代码)。

现在,您可以设置cm项的任何属性,而不使用setColProp。以同样的方式,您可以使用delete删除该属性。例如

delete cm.editoptions.dataEvents;