2014-12-17 4 views
0

manualRowMove는 시각적으로 잘 작동하지만 기본 DOM이 업데이트되지 않습니다. manualRowMove 다음에 HOT.getData()는 행 교환 후 최신 순서가 아닌 이전 데이터 순서를 표시합니다.HandsOnTable manualRowMove DOM을 업데이트하지 않음

내가 뭘 잘못하고 있었는지 조언하거나 버그입니다.

답변

1

manualRowMove를 켜고 행을 이동해도 원래 데이터 소스에는 영향을주지 않습니다. HOT.getData()는 테이블의 현재 상태와 다른 원본 데이터 소스를 반환합니다.

manualRowMove, manualColMove, columnSorting과 같은 플러그인은 데이터 계층의 맨 위에있는 추상화입니다. 그것들은 기본적으로 저자가 "논리적 인덱스"를 "물리적 인 인덱스"라고 부르는 것에서 찾아보기 테이블의 역할을하는 손 잡을 수있는 객체 (즉, sortIndex 속성)에 상태를 유지합니다. 여기에서 자세히 알아보기 : https://github.com/handsontable/handsontable/wiki/Understanding-column-sorting-plugin

사용자가 테이블의 순서를 정렬 한 다음 해당 순서를 저장하도록 허용하는 것처럼 보입니다. 테이블을 걷고 getDataAtRow()와 같은 메서드를 사용하여 테이블 순서로 데이터를 가져 오려면 고유 한 func을 굴려야합니다.

+0

감사합니다. 하지만 HOT에서 열이 추가/제거되면 (contextMenu : [ 'row_above', 'row_below', 'remove_row']) 전체 HOT에 대해 manualRowMove 옵션이 더 이상 작동하지 않거나 비정상적으로 작동하는 것을 경험했습니다. 다음을 확인하십시오. http://jsfiddle.net/bcm3uk62/ 알려주십시오. – James

+0

예, 소스를 살펴본 후에 누군가 행 작성 또는 행 제거 후 manualRowPositions 배열을 업데이트하는 데 필요한 코드를 추가하는 것을 잊어 버렸습니다. HandsontableManualColumnsMove 플러그인은 필요한 기능을 구현하지만 HandsontableManualRowMove 플러그인은 구현하지 않습니다. 내 로컬 파일을 패치 했으므로 github에서 끌어 오기 요청을 제출할 수 있습니다. – emispowder

+0

이제 HOT 팀이이 수정 사항으로 새 버전을 출시 할 때까지는이 문제에 대한 해결책이 없습니다. 당분간 해결 방법이 있으면 조언을 구하십시오. – James

0

내가 수정 한 방법은 서버의 데이터베이스에 새로운 순서를 밀어 넣기 위해 PHP 스크립트를 사용하는 것입니다 (일부 </swap 논리가 있어야합니다. PHP 토큰에서는 쉽지는 않지만 할 수있다), 이론적으로 그리드를 기억하고 "새로 고침"할 수는 있지만 필자는 그것이 필요하다고 생각하지 않았다. 분명히 내 데이터베이스에서 원래 JSON은 순서에

 afterRowMove: function (oldIndex, newIndex){ 
      $.post('../ajax/partsOrder.php?id=212&new_parts_order=' + newIndex + '&old_parts_order=' + oldIndex, function(data) {      
      var msg = ''; 
      if (data.err!=0 || data.url==0) { 
       msg = 'Error: ' + data.err; 
      } 
      else { 
       msg = 'Success: ' + data.msg; 
      } 
      console.log('partsOrder.php says: '+msg); 
      },"json"); 
     } 

PS를 나열됩니다 :이 handontable에서 주요 누락 생각, 나는 GetData의()는 단순히 GUI를 나타내지 않는 감동하지 않았다. 실제로 그것은 국경 범죄자이기 때문에 심지어 이것 없이는 GUI에서 모두 일했습니다.

관련 문제