<elx-editable
ref="editable"
:edit-config="{trigger: 'click', mode: 'cell'}"
:edit-rules="{name: [{required: true, message: 'Please enter a name.', trigger: 'blur'}]}">
<elx-editable-column
prop="name"
label="Name"
:edit-render="{name: 'ElInput'}"></elx-editable-column>
<elx-editable-column
prop="age"
label="Age"
:edit-render="{name: 'ElInputNumber'}"></elx-editable-column>
</elx-editable>
edit-rules 校验规则配置:
属性 |
描述 |
类型 |
可选值 |
默认值 |
required |
是否必填 |
Boolean |
— |
— |
min |
校验值最小长度(如果 type=number 则比较值大小) |
Number |
— |
— |
max |
校验值最大长度(如果 type=number 则比较值大小) |
Number |
— |
— |
type |
类型校验 |
String |
number / string |
string |
pattern |
正则校验 |
RegExp |
— |
— |
validator |
自定义校验方法 |
Function(rule, value, callback) |
— |
— |
trigger |
触发校验方式 |
String |
blur / change |
blur |
edit-config 编辑参数配置:
属性 |
描述 |
类型 |
可选值 |
默认值 |
trigger |
触发方式 |
String |
manual(手动触发方式,只能用于 mode=row) / click(点击触发编辑) / dblclick(双击触发编辑) |
click |
mode |
编辑模式 |
String |
cell(单元格编辑模式) / row(行编辑模式) |
cell |
render |
渲染方式,可以设置为 scroll 启用滚动渲染,支持海量数据 |
String |
default / scroll |
— |
renderSize |
只对 render=scroll 有效,配置一次渲染的条数 |
Number |
— |
— |
props |
配置节点对应属性值 |
Object |
— |
{children: 'children'} |
showIcon |
是否显示列头编辑图标 |
Boolean |
— |
true |
showStatus |
是否显示单元格值的修改状态 |
Boolean |
— |
true |
activeMethod |
只对 type=default 的列有效,该函数 Function({row, rowIndex, column?, columnIndex?}) 的返回值用来决定这一行或列是否允许编辑 |
Function |
— |
— |
autoClearActive |
当点击其它地方后,是否自动清除最后激活的行或单元格 |
Boolean |
— |
true |
clearActiveMethod |
该函数 Function({type, row, rowIndex, column?, columnIndex?}, event) 的返回值用来决定是否允许清除当前激活的行或单元格 |
Function |
— |
— |
useDefaultValidTip |
如果同时使用了数据校验和 fixed 列,请设置为 true 使用默认提示 |
Boolean |
— |
true |
validTooltip |
只对 useDefaultValidTip=false 有效,设置校验 tooltip 提示消息的参数 |
Object |
— |
{ offset: 10, placement: 'bottom-start' } |
disabledValidTip |
关闭校验提示 |
Boolean |
— |
false |
autoScrollIntoView |
当单元格被激活时,自动将单元格滚动到可视区域内 |
Boolean |
— |
false |
isTabKey |
只对 trigger!=manual 有效,是否启用 Tab 键切换到下一个单元格 |
Boolean |
— |
false |
tabToActive |
只对 isTabKey=true 有效,是否在 Tab 键切换后直接激活为编辑状态 |
Boolean |
— |
false |
isArrowKey |
只对 trigger!=manual 有效,是否启用箭头键切换行和单元格 |
Boolean |
— |
false |
isDelKey |
只对 trigger!=manual 有效,是否启用删除键清空单元格内容 |
Boolean |
— |
false |
isCheckedEdit |
只对 trigger!=manual 有效,是否启用选中状态允许值覆盖式编辑 |
Boolean |
— |
false |
checkedEditMethod |
只对 isCheckedEdit=true 有效,可以通过重写该函数 Function({row, rowIndex, column, columnIndex, cell}, event) 返回 false 来阻止默认值的覆盖行为 |
Function |
— |
— |
custom-columns 自定义列的配置:
属性 |
描述 |
类型 |
可选值 |
默认值 |
prop |
对应列内容的字段名 |
String |
— |
— |
visible |
默认是否显示 |
Boolean |
— |
true |
Editable Events
事件名 |
说明 |
参数 |
valid-error |
校验不通过时会触发该事件 |
rule,row,column,cell |
edit-disabled |
当点击后行或单元格如果是禁用状态时会触发该事件 |
row[,column,cell]?,event |
edit-active |
当点击后改变为编辑状态之后会触发该事件 |
row[,column,cell]?,event |
clear-active |
只对 autoClearActive=true 有效,当点击其它地方后,自动清除最后活动行或列之后会触发该事件 |
row[,column,cell]?,event |
blur-active |
当行或者单元格失焦之后会触发该事件 |
row[,column,cell]?,event |
custom-menu-link |
自定义的菜单点击后触发该函数 |
code,row,column,cell,event |
Editable Methods
方法名 |
描述 |
参数 |
refresh |
手动刷新表格,对于非双向同步的树形结构可能会用到 |
|
reload |
初始化完整表格数据,更新为初始状态 |
datas |
reloadRow |
初始化指定行数据,更新为初始状态 |
row, record? |
revert |
还原更改,还原指定行 row 或者整个表格的数据 |
row?rows?,prop? |
insert |
从第一行新增一行新数据 |
record |
insertAt |
第二个参数 record 从指定位置新增一条数据; null 从第一行新增一行新数据;-1 从最后新增一条数据 |
data,record |
remove |
数据删除,指定 row 或 [row, ...] 删除多条数据 |
row?rows? |
removeSelecteds |
删除选中行数据 |
— |
clear |
清空表格,删除表格所有行 |
— |
reset |
重置数据,清除指定行 row 或者 [row, ...] 或者整个表格的值 |
row?rows? |
clearActive |
清除所有已激活的行或单元格为不可编辑状态 |
— |
hasActiveRow |
判断当前是否已激活为编辑状态的行 |
row |
getActiveRow |
获取当前已激活为编辑行或单元格的信息 |
— |
setActiveRow |
只对 mode=row 有效,激活指定行为可编辑状态 |
row |
setActiveCell |
激活指定某一行的某个单元格为可编辑状态 |
row,prop? |
setChecked |
只对 target!==manual 有效,指定单元格为选中状态 |
row,prop |
hasRowInsert |
检查是否为新增的行数据 |
row |
hasRowChange |
检查行或列数据是否发生改变 |
row, prop? |
updateStatus |
更新单元格编辑状态(只对 showStatus=true 并且使用自定义渲染时,当值发生改变时才需要调用) |
scope |
getAllRecords |
获取表格数据集合 |
— |
getRecords |
获取表格数据,也可以指定索引获取某条数据 |
index |
getInsertRecords |
获取新增数据 |
— |
getRemoveRecords |
获取已删除数据 |
— |
getUpdateRecords |
获取已修改数据 |
— |
checkValid |
检测是否有校验不通过的列信息 |
— |
validateRow |
对表格某一行进行校验的方法,参数为行数据和一个回调函数。该回调函数会在校验结束后被调用,并传入两个参数:(是否校验成功,最近一列未通过校验的字段)。若不传入回调函数,则会返回一个 promise |
row,callback |
validate |
对整个表格进行校验的方法,参数为一个回调函数。该回调函数会在校验结束后被调用,并传入两个参数:(是否校验成功,最近一列未通过校验的字段)。若不传入回调函数,则会返回一个 promise |
callback |
Editable-Column Attributes
<elx-editable-column
prop="name"
label="Name"
:edit-render="{name: 'ElInput'}"></elx-editable-column>
edit-render 渲染参数配置
属性 |
描述 |
类型 |
可选值 |
默认值 |
name |
渲染内置的组件名称 |
String |
ElAutocomplete / ElInput / ElSelect / ElCascader / ElTimeSelect / ElTimePicker / ElDatePicker / ElInputNumber / ElSwitch / ElRate / ElColorPicker / ElSlider |
ElInput |
type |
渲染类型 |
String |
default(组件触发后可视) / visible(组件一直可视) |
default |
autofocus |
该单元格在激活后自动获取焦点(如果是渲染自定义组件,需要指定 class=elx-custom_input 才会自动获得焦点) |
Boolean |
— |
— |
attrs |
改为使用 props |
Object |
— |
{} |
props |
渲染组件附加属性,参数请查看被渲染的 Component props |
Object |
— |
{} |
events |
渲染组件附加事件,参数为 ( { rule, row, column, $index }, ...Component arguments ) |
Object |
— |
{} |
options |
只对 name=ElSelect 有效,下拉组件选项列表 |
Array |
— |
[] |
optionProps |
只对 name=ElSelect 有效,下拉组件选项属性参数配置 |
Object |
— |
{ value: 'value', label: 'label' } |
optionGroups |
只对 name=ElSelect 有效,下拉组件分组选项列表 |
Array |
— |
[] |
optionGroupProps |
只对 name=ElSelect 有效,下拉组件分组选项属性参数配置 |
Object |
— |
{ options: 'options', label: 'label' } |
Editable-Column Scoped Slot
name |
说明 |
— |
自定义渲染显示内容,参数为 { row, column, render } |
edit |
自定义渲染组件,参数为 { row, column, render } |
header |
自定义表头的内容,参数为 { column, render } |
valid |
自定义校验提示信息,参数为 { rule, row, column, render } |
Example
<template>
<div>
<el-button @click="$refs.editable.insert()">新增</el-button>
<el-button @click="$refs.editable.removeSelecteds()">删除选中</el-button>
<elx-editable
ref="editable"
:data.sync="tableData">
<elx-editable-column
type="selection"
width="55"></elx-editable-column>
<elx-editable-column
type="index"
width="55"></elx-editable-column>
<elx-editable-column
prop="name"
label="只读"></elx-editable-column>
<elx-editable-column
prop="sex"
label="下拉"
:edit-render="{name: 'ElSelect', options: sexList}"></elx-editable-column>
<elx-editable-column
prop="num"
label="数值"
:edit-render="{name: 'ElInputNumber'}"></elx-editable-column>
<elx-editable-column
prop="date"
label="日期"
:edit-render="{name: 'ElDatePicker', props: {type: 'date', format: 'yyyy-MM-dd'}}"></elx-editable-column>
<elx-editable-column
prop="flag"
label="开关"
:edit-render="{name: 'ElSwitch', type: 'visible'}"></elx-editable-column>
<elx-editable-column
prop="remark"
label="文本"
:edit-render="{name: 'ElInput'}"></elx-editable-column>
</elx-editable>
</div>
</template>
<script>
export default {
data () {
return {
tableData: [{
date: 1551322088449,
name: '小徐',
sex: '1',
num: '26',
flag: false,
remark: '备注'
}],
sexList: [
{
'label': '男',
'value': '1'
},
{
'label': '女',
'value': '0'
}
]
}
}
}
</script>