设置单元格值并使其在内联编辑中保持可编辑状态

时间:2012-06-27 12:47:49

标签: javascript jquery jqgrid

我必须通过代码更改单元格值并使其可编辑。使用此代码,我可以更改其他单元格的值,但单元格“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);

1 个答案:

答案 0 :(得分:3)

我不确定我理解你是否正确。区分编辑可编辑单元格/行非常重要。可编辑是可以在表单编辑,内联编辑或单元格编辑方面编辑的行或单元格。可能当前正在编辑 单元格并且您想要更改单元格的值。在这种情况下,您无法使用setCell方法。而不是你必须得到<td>作为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表示<tr>的DOM的jQuery包装器。因此,要获取<td>的{​​{1}}单元格,您可以使用

'paidHour'

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

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