2011-08-27 2 views
1

jqGrid 편집 된 행 ID는 응답에서 반환 된 ID에서 저장 한 후 새로 고쳐야합니다. 아래 코드를 시도했지만 정의되지 않은 메시지 상자가 나타납니다.포맷터 작업 저장 버튼으로 저장 한 후 jqgrid 행 ID를 업데이트하는 방법

행 ID를 업데이트하는 방법은 무엇입니까? 작업 저장 버튼으로 행을 업데이트 한 후 응답 텍스트를 얻는 방법은 무엇입니까?

앤드루스

grid.jqGrid({ 
    colModel: [{name:_actions,width:45, 
    formatter:"actions", 
    formatoptions: 
    {keys:true, 
    delbutton:false, 
    onSuccess:function (rowID, response) { 
     alert(response);    
     $("#" + rowID).attr("id", response.responseText); 
     }, 

    onEdit: function (rowID) { 
    if (typeof (lastSelectedRow) !== 'undefined' && rowID !== lastSelectedRow) 
     cancelEditing($('#grid')); 
     lastSelectedRow = rowID; 
    } 
}} 

답변

2

난 다시 우리의 오래된 토론에 가고 싶지 않아,하지만 난 그냥 id의 변화는 좋은 방법이 아니라고 생각 나게합니다.

setTimeout 안에 넣으면 문제를 해결할 수 있습니다. 이 경우 변경은 인라인 편집 코드에서 이전 ID를 처리 한 후에 수행됩니다.

또한 다음을 확인할 수 있습니다. 내부에서 jqGrid로 저장 한 다른 곳에서 id의 이름을 바꾸는 것이 중요 할 수 있습니다. 예를 들어, selrowselarrrow의 경우 선택한 행의 ID가 유지됩니다.

+0

중요한 문제는 조치 버튼이 오래된 rowid와 응답 텍스트가 인라인 편집 aftersavefunc 에서처럼 전달되는 단일 이벤트가 없다는 것입니다. 전역 변수에 대한 응답을'onSuccess = function (jqXHR) { actionresponse = jqXHR; return true;} "'이것을 사용하고 afterSave = function (rowID) { aftersavefunc (rowID, actionresponse)}'에서 사용합니다 .Db 체계는 자연스러운 기본 키 ID를 사용하고 수천 개의 사이트에 배포됩니다. – Andrus

+1

@Andrus : 예전 버전의 소프트웨어를 여러 개 설치 한 경우 업데이트 시나리오가 복잡 할 수 있음을 이해합니다. 그럼에도 불구하고 문제는 생각하지 않았습니다. 난 당신이 기존 테이블의 기본 키를 변경하지 않는 것이 좋습니다. ** AUTOINCREMENT 값을 저장할 수있는 테이블에 ** 추가 ** 열을 추가하는 것이 좋습니다. 그 후 UNIQUE CONSTRAINT 또는 열에 대한 인덱스를 배치 할 수 있습니다. 열의 값으로 빠른 검색을하고 ** 값을 id로만 사용하십시오. 다른 응용 프로그램에서는 이전 기본 키를 계속 사용할 수 있습니다. ould work – Oleg

+1

@Andrus :'jqXHR'를 어딘가에 저장하는 것에주의해야합니다. 포인터가 사용되지 않으면'null'에 할당되도록 코드를 작성해야합니다. 'jqXHR'에 대한 메모리를 공개 할 수 없기 때문에 이것을하지 않으면 메모리 리크를 가질 수 있습니다. – Oleg

관련 문제