- 引入代码库,开发时使用less和typescript,线上可使用css和js
<link rel="stylesheet/less" type="text/css" href="itable.less" />
<script src="./less.min.js"></script>
<script src="jquery.js" charset="utf-8"></script>
<script src="itable.js" charset="utf-8"></script>
<div id="myTable" style="overflow:auto;">
</div>
var option = {
tableId:'demoTable',
data: data,
columns: columns,
freezeHead: true,
freezeColumn: true,
getUniqueId: function (rowData) {
return rowData.id;
},
width: 1500,
handleTdClick:function(rowId,cellIndex ,td){
console.log(rowId);
}
};
var itable = $('#myTable').itable(option);
itable.render();
返回的实例可继续调用方法
用服务器打开 index.html 可以看到综合示例
名称 |
类型 |
必填 |
含义 |
tableId |
string |
yes |
创建表格后给表格的ID,如果是固定列的情况,会存在左右两个表格,id为 tableIdleft 和 tableIdright |
name |
string |
no |
插件内部用来区分左右表格,在固定列的情况出现 |
data |
array |
yes |
数据项数组,数据项为一个对象,每个字段对应一个单元格 |
columns |
array |
yes |
列定义,详细见下方列定义 |
freezeHead |
boolean |
no |
是否冻结头部,默认false |
freezeColumn |
boolean |
no |
是否冻结列,如果在columns中有列为冻结列,那么需要明确指定为true,默认false |
width |
number |
no |
表格容器的宽度,表格的宽度始终是100%,如果有指定本属性,则应用到容器上,否则容器也是100% |
getUniqueId |
string或function |
no |
返回一行的唯一标识,如果是字符串,则代表该行的唯一列名称,比如指定 "id",则改行的 "id" 列的数据作为唯一标识,如果是函数,则函数的返回值作为唯一标识,每行都会运行这个函数,如果不指定,使用系统默认函数,默认函数为该行的所有Value 的字符串拼接 |
handleScroll |
function |
no |
处理滚动事件,(scrollValue: number) => void |
handleEnter |
function |
no |
处理鼠标悬浮事件,确定当前左右表格哪个是活动表格,(name: string) => void |
handleSort |
function |
no |
处理排序事件,(sortColumnIndex: number, sortDirection: 'ascend'|'descend') => void |
handleTdHover |
function |
no |
处理鼠标悬浮td事件,(rowIndex: number, cellIndex: number, td?:JQuery<Node[]>) => void |
handleTdClick |
function |
no |
处理鼠标点击td事件,(rowId: string, cellIndex: number ,td?:JQuery<Node[]>) => void |
handleTdDblClick |
function |
no |
(rowId: string, cellIndex: number, td?:JQuery<Node[]>) => void |
名称 |
类型 |
必填 |
含义 |
title |
string |
yes |
标题 |
name |
string |
yes |
字段名称,根据这个到data中取值 |
isFrozen |
boolean |
no |
是否冻结 |
resizable |
boolean |
no |
是否可伸缩 |
isSequence |
boolean |
no |
是否序号列,如果有其他冻结列,序号列也必须为冻结列 |
sorter |
boolean|function |
no |
是否排序,或者指定排序函数,(a: Value, b: Value) => number |
sortDirections |
array |
no |
排序顺序,升降序,'ascend' 和'descend'的数组 |
defaultSortOrder |
string |
no |
默认按 'ascend' 还是 'descend' 排序 |
width |
number|string |
no |
宽度,数值代表像素,字符串代表百分比 |
maxWidth |
number |
no |
最大宽度 |
minWidth |
number |
no |
最小宽度 |
render |
function |
no |
渲染函数,默认调用 toString() 显示 |
名称 |
定义 |
含义 |
setOption |
(optionsParam: Options, $this?: JQuery)=>void |
设置配置项 |
getOption |
()=>Options |
获取配置项 |
getState |
()=>State |
获取内部状态 |
updateOptionData |
(row:Row)=>void |
更新一行option data,同时更新option data,根据 id 查找需要更新的数据, 同时更新dom渲染,是更新,不是 重绘,也就是不会调用 render 方法 |
replaceOptionData |
(data: Array) => void |
替换option data,同时替换state data |
appendOptionData |
(row: Row) => void |
向option data 末尾添加一条数据,触发重新渲染,同时更新state data |
appendOptionData |
(row: Row) => void |
向option data 末尾添加一条数据,触发重新渲染,同时更新state data |
prependOptionData |
(row: Row) => void |
向option data 头部添加一条数据,触发重新渲染,同时更新state data |
deleteOptionData |
(id:string)=>void |
删除一行,触发重新渲染,并同时删除options和state中的数据 |
setActiveRow |
(id:string)=>void |
设置活跃行,活跃行背景蓝色 |
setLockedRow |
(id:string)=>void |
设置锁定行,锁定行背景黄色,并置顶 |
updateStateData |
(data: Array) => void |
更新state data,目前可能由排序触发,未来也许会添加筛选功能,也能触发 |
render |
() => void |
渲染表格数据 |
destory |
(withChild:boolean) => void |
销毁dom内容,引用 |