2016-10-03 2 views
0

나는 handsontable의 피들 ​​중 하나를 테스트하고 열을 이동하는 동안 문제를 발견했습니다. 다음 바이올린으로 가서 언급 한 단계를 수행하십시오. http://jsfiddle.net/5u5vczcg/Handsontable에서 열을 이동 한 후 셀을 편집하는 동안 데이터가 올바르지 않습니다.

var hot = new Handsontable(container, { 
    data: financeData, 
    colHeaders: ["Price", "Date", "1D Chg", "YTD Chg", "Vol BTC"], 
    rowHeaders: true, 
    stretchH: 'all', 
    sortIndicator: true, 
    columnSorting: true, 
    contextMenu: true, 
    manualColumnMove : true, 
    columns: [ 
    {type: 'numeric', format: '$0,0.00'}, 
    {type: 'date', dateFormat: 'DD/MM/YYYY', correctFormat: true}, 
    {type: 'numeric', format: '0.00%'}, 
    {type: 'numeric', format: '0.00%'}, 
    {type: 'numeric', format: '0.00'} 
    ] 
}); 
은 날짜 대신에 열 가격을 이동

. 두 배의 가격 셀을 클릭하면 셀의 값이 날짜로만 표시됩니다. 날짜 셀을 두 번 클릭해도 데이터가 올바르게 표시되지 않습니다. 확인해 주시겠습니까?

답변

0

귀하가 직면 한 것은 꽤 오래된 것입니다. fixed issue. 몇 가지 테스트/연구 후에, manualColumnMove 옵션을 활성화하면 실제로 프로젝트에서 동일한 동작을합니다. 자신의 자식에 Handsontable의 최신 버전에 대한

  1. 를 다시 열고 문제 :

    그래서 내가 당신에게 제안하고하는 것은이 두 가지 솔루션 중 하나 선택하는 것입니다.

  2. 은 이전 버전과 당신 위해 한 해결 방법 (버전 0.15.0) 사용 : 나는 당신이 그와 함께 시작하는 방법의 아이디어를 얻을 수 있다고 생각

Your JS Fiddle uptaded

을 사용자 정의하여를 손수건.

    1. 을 :

      hot.addHook('afterColumnMove', function(sourceIndex, targetIndex) { 
          var 
          sourceValues = hot.getData(0,sourceIndex,hot.getData().length,sourceIndex), 
          sourceProperties =hot.getSettings().columns[sourceIndex], 
          sourceHeader=hot.getSettings().colHeaders[sourceIndex], 
          targetValues = hot.getData(0,targetIndex,hot.getData().length,targetIndex), 
          targetProperties =hot.getSettings().columns[targetIndex], 
          targetHeader=hot.getSettings().colHeaders[targetIndex], 
      
          newColumns=hot.getSettings().columns, 
          newHeaders=hot.getSettings().colHeaders; 
      
          newHeaders[sourceIndex]=targetHeader; 
          newHeaders[targetIndex]=sourceHeader; 
          newColumns[sourceIndex]=targetProperties; 
          newColumns[targetIndex]=sourceProperties; 
      
          hot.updateSettings({columns:newColumns,colHeaders:newHeaders}); 
          hot.populateFromArray(0,sourceIndex,sourceValues,hot.getData().length,sourceIndex); 
          hot.populateFromArray(0,targetIndex,targetValues,hot.getData().length,targetIndex); 
      }); 
      

      그러나 세 번째 옵션이 있습니다 : 귀하의 경우를 들어, 내가 한 일은 사건 'afterColumnMove'와 함께 두 개의 수정 된 열을 업데이트하는 것입니다 다른 것을 사용하십시오. 귀하의 예산에 따라 편집자 버전 DataTables은 IMHO입니다. Handsontable은 데이터를 편집하려 할 때 많은 버그가 남아있을 수 있으므로 잘 보입니다. & 다른 기능을 사용하십시오. (이 문제는 완벽한 예입니다).