2012-02-27 8 views
0

IDが "new"の新しい行を追加します。 id( "code")と指定された列に新しい値で行を保存した後、グリッドをリロードしたり、行IDを新たに追加しない限り、IDは "new"のままです。rowidを変更するには

行が保存された後にROWIDを変更する別の機能はありますか?

ありがとうございました。

答えて

1

jQuery.attrを使用して、任意の属性(idを含む)を設定することができます。 id属性の変更には注意が必要です。たとえば、loadonce: trueオプションを使用する場合、またはdatatype: 'local'を使用する場合は、現在のIDと行データのマッピングをキャッシュする内部的にはdataおよび_indexのパラメータが存在します。その場合、_indexのパラメータをjqGridに更新する必要があります。

実装に問題がある場合は、現在使用しているコードを投稿する必要があります。 jqGridの一部のオプション(datatypeloadonceなど)は知っておくことが非常に重要です。さらに、あなたが使用するためにどのediting modeを知ることが重要です。 jqGridグリッドの主キーを変更しないので、IDを変更する

1

は、いくつかのステップを必要とするので、私たちは手動ですべての手順を実行する必要があります。

var new_id = 39; //for example 
aftersavefunc: function(old_id) { 

    //get data param 
    var row = grid.jqGrid('getLocalRow', old_id); 
    console.log(row); //use for firefox test 
    row._id_ = new_id; 

    grid.jqGrid('setRowData',old_id,{my_id:new_id}); 
    $("#"+response).attr("id", new_id); //change TR element in DOM 

    //very important to change the _index, some functions using the     
    var _index = grid.jqGrid('getGridParam', '_index'); 
    var valueTemp = _index[old_id]; 
    delete _index[old_id]; 
    _index[new_id] = valueTemp; 
} 
0

ザ・はjqgridでchangeRowId関数です。

function aftersavefunc(rowId, response) { 

var json = $.parseJSON(response.responseText); 
var $tr = $("#" + rowId); 

    setTimeout(function() { 
     $grid.jqGrid("changeRowid", rowId, json.Id); 
     $grid.jqGrid('setSelection', json.Id); 
     setFocusToGrid(); 
    }, 1000); 
} 

aftertimeは、aftersavefuncが呼び出された後に古い行IDを復元するため、setTimeoutが必要です。

関連する問題