2012-06-27 41 views
1

我必须通过代码更改单元格值并保持其可编辑。通过此代码,我可以更改其他单元格的值,但单元格“paidHour”更改为不可编辑状态。 如何让它再次可编辑?设置单元格值并在内联编辑中保持可编辑

 editoptions: { dataEvents: [{ type: 'keyup', fn: function (e) { 
      var rowId = $(e.target).closest("tr.jqgrow").attr("id"); 
      var total = parseInt(e.target.value, 10); 
      var paidWeek = parseInt($("#List").getCell(rowId, 'paidWeek'), 10); 
      var addHourBank = 0; 

      if (total >= paidWeek) { 
        addHourBank += (total - paidWeek); 
        total = paidWeek; 
      } 

      $("#List").setCell(rowId, 'paidHour', total); 

回答

3

我不确定我是否理解你的正确。区分编辑可编辑单元/行是很重要的。可编辑的是可以在表单编辑,内联编辑或单元格编辑方面进行编辑的行或单元格。目前可能编辑的单元格,并且您想要更改单元格的值。在这种情况下,您不能使用setCell方法。而不是你必须得到<td>作为DOM或jQuery包装,然后设置单元格的子元素的值。

例如,你可以使用定义如下

var getColumnIndexByName = function (grid, columnName) { 
    var cm = grid.jqGrid('getGridParam', 'colModel'), l = cm.length, i; 
    for (i = 0; i < l; i++) { 
     if (cm[i].name === columnName) { 
      return i; // return the index 
     } 
    } 
    return -1; 
} 

它可以让你的行内的列的索引getColumnIndexByName功能。所以,你可以行

var rowId = $(e.target).closest("tr.jqgrow").attr("id"); 

分成

var $tr = $(e.target).closest("tr.jqgrow"), rowId = $tr.attr("id"); 

$tr代表<tr>的DOM jQuery的包装。因此,要获得<td>小区'paidHour'可以使用

var iCol = getColumnIndexByName ($(this), 'paidHour'); 
var $td = $tr.find(">td:nth-child(" + (iCol + 1) + ")"); 

并更改单元格的值,你可以使用

$td.find("input").val(total);