2011-10-14 46 views
0

我有一个方法,我想成为网格中的回调对象。我该怎么做?作为jqGrid回调的对象方法

非工作示例代码:

var GridHolder = function() { 
    //... 
    this.lastSel = null; 
    //... 
}; 
GridHolder.prototype = { 
    //... 
    someAction : function(id){ /*doSomeWork();*/}, 
    rowSelect : function(id){ 
     this.someAction(id); // failed 
     if(id && id !== this.lastSel){ 
      jQuery('#grid_id').restoreRow(this.lastSel); 
      this.lastSel=id; 
     } 
     jQuery('#grid_id').editRow(id, true); 
    } 
    //... 
}; 
var gridHolder = new GridHolder(); 
jQuery('#grid_id').jqGrid({ 
    //... 
    onSelectRow: gridHolder.rowSelect, 
    //... 
}); 

现在的回调是由jqGrid的调用“呼叫”,这是在方法替代“这个”。

即:

if($t.p.onSelectRow && onsr) { $t.p.onSelectRow.call($t, pt.id , stat); } // this === $t in callback instead of gridHolder 

回答

0
var gridHolder = new GridHolder(); 
jQuery('#grid_id').jqGrid({ 
    //... 
    onSelectRow: function(id) { gridHolder.rowSelect(id); }, 
    //... 
}); 

应该在正确的上下文中执行。

相关问题