Handsontable 序列词创建
Posted
技术标签:
【中文标题】Handsontable 序列词创建【英文标题】:Handsontable Sequence word creation 【发布时间】:2016-04-19 13:50:39 【问题描述】:感谢这个精彩的插件。
我正在使用这个插件来实现网格功能。为此,我尝试在下拉时使用序列词创建。
据我所知,我已经实施了。但是我在选择并拖动多列时遇到了一个问题。
我为此示例创建了jsfiddle
var myData = [
["WIRE-001", 10, 11, 12, 13],
["WIRE-002", 20, 11, 14, 13],
["WIRE-003", 30, 15, 12, 13]
];
$("#exampleGrid").handsontable(
data: myData,
startRows: 5,
startCols: 5,
//minSpareCols: 1, //always keep at least 1 spare row at the right
minSpareRows: 10, //always keep at least 1 spare row at the bottom,
rowHeaders: true,
colHeaders: true,
contextMenu: true,
currentRowClassName: 'currentRow',
currentColClassName: 'currentCol',
outsideClickDeselects: false,
fillHandle: true,
beforeAutofill: function(start, end, data)
console.log(arguments);
console.log(start);
console.log(end);
console.log(data);
var selectedVal = this.getSelected();
var selectedData = this.getData(selectedVal[0], selectedVal[1], selectedVal[2], selectedVal[3]);
var sequenceNum = [];
var sequenceWord = [];
var numberFormat = 1;
if (start.col == 0)
for (var j = 0; j < selectedData.length; j++)
var numbers = selectedData[j][0].match(/[0-9]+$/g);
if (numbers && !isNaN(numbers[0]))
numberFormat = numbers[0].length;
sequenceNum.push(Number(numbers[0]));
var words = selectedData[j][0].match(/[A-Za-z\-]+/g);
if (words && isNaN(words[0]))
sequenceWord.push(words[0]);
var prefix = sequenceWord.length > 0 ? sequenceWord[0] : "";
var lastValue = sequenceNum[sequenceNum.length - 1]
var diff = sequenceNum.length > 1 ? (sequenceNum[sequenceNum.length - 1] - sequenceNum[sequenceNum.length - 2]) : 1;
for (var i = 0; i < end.row; i++)
if (!data[i]) data[i] = [];
data[i][0] = prefix + pad((lastValue + diff), numberFormat);
diff++;
,
afterChange: function(changes, source)
);
感谢您帮助解决这个问题。
【问题讨论】:
如果您选择区域 A1 到 C4 并拖动到第 10 行,您将看到我要说的问题。 【参考方案1】:我建议打开控制台并检查错误,因为这样做会非常清楚您的问题是什么。导致您在评论中提到的错误的示例使用了一个空行。在你的代码中你正在做
var words = selectedData[j][0].match(/[A-Za-z\-]+/g);
但是,selectedData[j][0]
将是 null
。我会简单地添加一个空行检查并适当地处理它(扔掉它或默认为某个值)
【讨论】:
您好,感谢您的回复。序列词创建正在正确创建。我的问题是当我选择多列和多行并拖动时,列 A 正在正确生成,因为我只生成到该特定列。其他列未正确自动填充。以上是关于Handsontable 序列词创建的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Handson 表格单元格中添加垫子图标或电子表格图标?
自定义渲染器功能在 Handsontable 插件中不起作用