2012-01-05 2 views
1

jqGrid 1.5.2를 사용하고 있는데, 서브 그리드로 그리드가 있습니다. 부모 및 서브 그리드 모두 정렬 허용이없는 셀 편집 모드입니다. 부모 격자 loadComplete 이벤트에서 jqgrid - 런타임에 정의 된 subgrid를 동적으로 추가/제거하는 방법

는 I 성공은 다음과 같이 행의 데이터에 의존 subgrids 일부 제거 :

loadComplete: function() { 
    var dataIds = $('#mygrid1').jqGrid('getDataIDs'); 
    for (var i = 0;i < dataIds.length; i++) { 
    var data = $("#mygrid1").jqGrid('getRowData', dataIds[i]); 
    if (data[i].hasChild='N') { 
     var grid = $("#mygrid1"); 
     $("#"+dataIds[i]+" td.sgcollapsed",grid[0]).unbind('click').html(''); 
    } 
    } 
} 

문제는

데이터이다 [I] .hasChild는 부모 그리드에서 사용자가 변경할 수 있으므로 서브 그리드가 행에 대해 다시 확장 될 수 있기를 바랍니다.

내가 다시 요소를 이벤트를 바인딩 '클릭'하는

$("#"+rowid+" td.sgcollapsed",grid[0]).bind('click').html('+'); 

을 시도했습니다; 하지만 작동하지 않습니다. '+'기호가 서브 그리드 열에 다시 첨부 되더라도 클릭 이벤트는 실행되지 않습니다.

제 접근 방식에 대해 다른 사람이 나에게 해결책이나 해결책을 줄 수 있습니까? 고맙습니다. 하루 종일 광산 후 , 그리고 '시도와 오류는'나는 가까운 성공하는 방법을 발견하고, 코딩 아래와 같이 :

는 2012년 1월 6일에 업데이트

첫째, 전 각 행의 바인딩을 제거하고 배열에서 .clone (true, true)을 사용하여 '데이터 및 이벤트 데이터'를 저장하려고했습니다.

currChild[rowid] = $("#"+rowid+"td.sgcollapsed",grid[0]).clone(true,true); 
$("#"+rowid+" td.sgcollapsed",grid[0]).unbind('click').html(''); 

그럼, 내가 처음에 행으로 다시 변경 부착 된 아 격자를봤을 때 내가 행복했다

$("#"+rowid+" td.sgcollapsed",grid[0]).replaceWith(currChild[rowid]); 

에 의해 다시 요소에 복제를 대체; 그런 다음 다시 바인딩 해제하여 제거하려고했는데 문제가없는 것 같습니다.

그러나 동일한 행의 세 번째 변경에서 행에 서브 글리드를 다시 가져 오려고하면 행의 subgrid 열이 손실되고 해당 행의 왼쪽으로 열이 이동합니다!

모든 단일 행을 테스트했으며 행이 한 행을 잃어 버렸고 세 번째 변경시 왼쪽으로 이동하는 것과 동일한 동작을 보였습니다.

지금은 늦은 밤에 잠을 먼저 쉰다. 앞으로 어떤 제안이 들기를 기대하며 앞으로 나아갈 수 있습니다. 고맙습니다.

답변

1

나는 마침내 그것을 관리하고이 성공을하기 때문에 이것은 좋은 아침이며 나 자신에게 게임 시간을주고 싶다!

마지막 문제는 동일한 행의 세 번째 변경에서 하위 그리드 열을 잃어 버렸습니다. 다시 바인딩 해제하기 전에 요소에 대한 복제본을 만들지 않았기 때문입니다 (afterSaveCell 이벤트에서 동적 변경을 수행함).

grid.collapseSubGridRow(rowid); //collapse subgrid before unbind 
currChild[rowid] = $("#"+rowid+"td.sgcollapsed",grid[0]).clone(true,true); 
$("#"+rowid+" td.sgcollapsed",grid[0]).unbind('click').html(''); 

그래서 바인딩을 해제하기 전에 복제본을 만든 후에는 모든 것이 올바르게 수행됩니다. 좋은!

또한 해결 방법 및 개선 사항이 있거나 잠재적 인 문제점 및 수정 사항이 있으면 누구나 듣고 싶습니다. 고맙습니다.

관련 문제