handsontable 问题
2024-08-22 09:32:41
碰到问题了,去官网上找community:http://docs.handsontable.com/0.16.1/tutorial-quick-start.html
1、
描述:把handson table放在bootstrap tab中,首次没有激活,table没有正常显示。
原因:这种情况下,table invisible,所以不会调用render(),不会正常显示
解决办法:
$('a[href="#data"]').on('shown.bs.tab', function (e) {
hsd.hot.render();
});
另一个问题
描述:在上面的基础上,fixedRowsTop无效
解决办法:添加这一句,重新更新。
hsd.hot.updateSettings({fixedRowsTop : 1});
注:直接更新就可,不用render()也行。
2、
频繁切换表格内容是,使用updateSetting,这样就不会出现数据显示异常。
3、
minSpareRows:1,
minSpareCols:1
在最后一行输入内容,enter后,会自动增加一行。
4、
给某行设置背景颜色:这一类问题都这样解决
cells:function(row, col, prop){
var cellProperties = {};
if(row === 0){
cellProperties.renderer = firstRowRenderer;
}
return cellProperties;
} var firstRenderer = function firstRowRenderer(instance, td, row, col, prop, value, cellProperties) {
Handsontable.renderers.TextRenderer.apply(this, arguments);
td.style.background = '#eee';
}
5、
建空表是data:[[]];
6、
滚动到指定行
hsd.hot.selectCell(1, 0);
hsd.hot.deselectCell();
找了好久,原来确实没有默认的方法,只能自己解决了,hsd.hot是我自己定义的表
7、copy,paste,cut
demo--contextMenu中有例子,但是jsfiddle中,copy和paste显示有点不正常;cut,没有提到
8、
firefox下鼠标滚动缓慢:
github上回复,是使用其他三种方式:滚动条,键盘,右键后能快一点。https://github.com/handsontable/handsontable/issues/2520
或者是修改firefox的配置:选项--高级--常规--去掉(使用平滑滚动)。
9、
updateSettings:一个很奇怪的问题
场景:为了区分是哪种数据结构,而进行的更新。用A建一表,有cells属性,用B更新此表,cells中使用的是A的数据
//----------初始化开始----------------------
//获取数据
$.get('json/handsontable.json', function(data){
// hsd.data = data;
hsd.init(data);
}); // 更新
$('#update').on('click', function(){
$.get('json/handsontable1.json', function(data){
// hsd.data = data;
// hsd.init();
hsd.hot.updateSettings({
data:data
})
});
}) //----------初始化结束---------------------- hsd.con = $('#con');
hsd.init = function(data){
// updateSettings 时不会执行这一句,
console.log('sfp')
hsd.hot = new Handsontable(hsd.con[0], {
data: data,
rowHeaders: true,
colHeaders: ['SLE', 'Control'],
contextMenu: true,
columnSorting: true,
manualColumnResize: true,
fixedRowsTop: 1,
fixedColumnsLeft: 1,
sortIndicator: true,
cells: function(row, col, prop){
// updateSetting时 会执行这一句
if(row === 0 && col === 0){
console.log(data[0][0]);
}
}
});
};
解决办法:init不传参数,获取到B之后,执行hsd.data = B, init中得数据用hsd.data
10、如何区分自动创建的row和通过contextmenu创建的row:http://jsfiddle.net/2oc2hb3e/18/
var flag = false;
afterRender: flag = true;
afterCreateRows: if(flag){ // }
如果有mincols,removeRows,会自动CreateRows,所以需要在removeRows:flag=false
注意:update和createtable时,都先要flag=false
最新文章
- Get请求中文乱码的几种解决方式
- android遥控器的映射
- 计时函数 clock() in c and c++
- 多语言本地化开发Localized
- WM8962 HPOUT 信号强度 时间周期
- 第六篇、抽屉效果+UITabBarController(主流框架)
- 九度OJ 1525 子串逆序打印 -- 2012年Google校园招聘笔试题目
- SVNclient安装与使用
- chrome 浏览器帐号登录不来,如何解决自己的书签
- C#实现文档转换成PDF
- informix建临时表索引
- Mac上安装brew 包管理工具
- redis 系列5 数据结构之字典(上)
- 实现无缝兼容ajax/websocket网页应用和服务
- libsvm使用总结
- 【bzoj4516】 Sdoi2016—生成魔咒
- arcgis连接excel出现数据库失败 外部数据库驱动程序意外错误
- java类加载机制及方法调用
- gitlab配置自动同步
- java 1.8 新特性 stream