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);
4

1 回答 1

3

我不确定我的理解是否正确。区分编辑可编辑单元格/行很重要。可编辑是可以在表单编辑、内联编辑或单元格编辑方面进行编辑的行或单元格。可能该单元格当前正在编辑并且您想要更改该单元格的值。在你不能使用setCell方法的情况下。取而代之的是,您必须获取<td>as DOM 或 jQuery 包装器,然后设置<input>单元格子元素的值。

例如,您可以使用 getColumnIndexByName 函数定义如下

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;
}

它为您获取行内列的索引。所以你可以分割线

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

进入

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

$tr表示 DOM 的 jQuery 包装器<tr>。因此,要为您获取<td>单元格,'paidHour'您可以使用

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

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

$td.find("input").val(total);
于 2012-06-27T13:51:07.530 回答