我在测试手柄的一个手柄,在移动列时发现了这个问题。请到下面的小提琴,并执行上述步骤。http://jsfiddle.net/5u5vczcg/
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'}
]
});移动列价格以代替日期。双击任何价格单元格,您将看到单元格中的值仅为日期。另外,当您双击日期单元格时,它们也不会正确显示数据。请您检查一下并解决一下。
发布于 2016-10-04 12:40:22
你在这上面面对的应该是一个很老的固定发行。经过几次测试/研究后,如果我激活了manualColumnMove选项,那么我的项目确实有相同的行为。
所以,我建议你们从这两种解决方案中选择一种:
你的JS Fiddle
我认为您可以从这个开始,并了解如何自定义您的Handsontable。对于您的情况,我所做的是用事件'afterColumnMove‘更新两个修改过的列:
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);
});然而,还有第三种选择:
https://stackoverflow.com/questions/39836593
复制相似问题