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

标签 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);

最佳答案

我不确定我是否理解正确。区分编辑可编辑 单元格/行很重要。可编辑的是在表单编辑、内联编辑或单元格编辑方面可以编辑的行或单元格。可能当前单元格正在编辑,您想要更改单元格的值。如果您不能使用 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> 'paidHour' 的电池你可以使用

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

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

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

关于javascript - 设置单元格值并使其在内联编辑中保持可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11226580/

相关文章:

javascript - CSS Slanding Div 边缘在图像上

javascript - 如何从 beforeEach 函数访问有关当前运行的测试用例的信息?

javascript - 使 JqGrid 列选择器弹出可拖动

javascript - 从 v3 升级到 v5 时代码不起作用

javascript - Firefox 添加 <a xmlns ="http://www.w3.org/1999/xhtml">

javascript - 在 div 内的页面加载时显示微调图像,并在页面完全加载到 div 内时隐藏微调图像

Javascript 字符串搜索不起作用?

javascript - 使用 Ajax 更新特定对象中单个字段的正确方法

entity-framework-4 - LINQ 动态查询库

jquery - jqGrid - 未应用日期和时间格式