2012-02-27 2 views
0

ID가 "new"인 새 행을 추가합니다. id로 지정된 열에 새로운 값을 가진 행을 저장 한 후 (예 : "code") 그리드를 다시로드하거나 행을 삭제하지 않는 한 id가 "new"로 유지됩니다. & 새 ID로 다시 추가하십시오.rowid를 변경하는 방법

행을 저장 한 후 ROWID를 변경하는 또 다른 기능이 있습니까?

감사합니다.

답변

1

jQuery.attr을 사용하여 모든 속성을 포함하여 id을 설정할 수 있습니다. id 속성을 변경하는 경우에만 매우주의해야합니다. 예를 들어 loadonce: true 옵션을 사용하거나 datatype: 'local'을 사용하는 경우 현재 ID를 행 데이터 매핑에 캐시하는 내부적으로 data_index 매개 변수가 있습니다. 그래서이 경우 _index 매개 변수를 jqGrid로 업데이트해야합니다.

구현에 문제가있는 경우 현재 사용중인 코드를 게시해야합니다. jqGrid의 일부 옵션 (예 : datatype, loadonce)은 매우 중요합니다. 또한 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); 
} 

aftersavefunc가 호출 된 후 jqgrid가 이전 행 ID를 복원하므로 setTimeout이 필요합니다.

관련 문제