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>として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");

は、の$trDOMの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 に答える