vxe-table 可编辑表格 行内编辑以及验证 element-UI集成

<vxe-table

border

show-overflow

ref="xTable"  --------------------------------------------------------------------------------------------可根据此变量控制表格内容

class="vxe-table-element"

height="600"

:data="tableData"--------------------------------------------------------------------------------------表格绑定数据来源

:edit-rules="validRules"------------------------------------------------------------------------------验证规则(可不写--则行内不验证)

@cell-dblclick="dbclickFun"-------------------------------------------------------------------------单元格双击触发方法(可不写)

@edit-closed="saveFun"-----------------------------------------------------------------------------编辑状态关闭触发方法(可不写)

highlight-current-row-----------------------------------------------------------------------------------选中当前行高亮(可不写)

:edit-config="{trigger: ‘dblclick‘, mode: ‘row‘, showStatus: true,autoClear:onedit}"-----编辑设置(双击触发(可改成单击事件 或不写 手动触发),行事件(也可写成cell 则为单元格事件),显示状态,自动清除状态)

>

<vxe-table-column type="index" width="80">

<template v-slot:header="{ column }">

<span>序号</span>

<i class="el-icon-question"></i>

</template>

</vxe-table-column>

<vxe-table-column

field="name"

title="ElInput"

min-width="140"

:edit-render="{type: ‘default‘}"

>

<template v-slot:edit="scope">

<el-input v-model="scope.row.name" @input="$refs.xTable.updateStatus(scope)"></el-input>

</template>

</vxe-table-column>

<vxe-table-column field="age" title="ElInputNumber" :edit-render="{type: ‘default‘}">

<template v-slot:header="{ column }">

<span>{{ column.title }}</span>

<i class="el-icon-warning"></i>

</template>

<template v-slot:edit="{ row }">

<el-input-number v-model="row.age" :max="35" :min="18"></el-input-number>

</template>

</vxe-table-column>

<vxe-table-column field="sex" title="ElSelect" width="140" :edit-render="{type: ‘default‘}">

<template v-slot:edit="scope">

<el-select v-model="scope.row.sex" @change="sexupda(scope)">

<!--可以使用change事件进行属性间的控制-->

<el-option

v-for="item in sexList"

:key="item.value"

:label="item.label"

:value="item.value"

></el-option>

</el-select>

</template>

<template v-slot="{ row }">{{ getSelectLabel(row.sex) }}</template>

</vxe-table-column>

<vxe-table-column field="date" title="ElDatePicker" :edit-render="{type: ‘default‘}">

<template v-slot:edit="{ row }">

<el-date-picker

v-model="row.date"

type="date"

format="yyyy/MM/dd"

@change="dateupda(scope)"

></el-date-picker>

</template>

<template v-slot="{ row }">{{ formatDate(row.date, ‘yyyy/MM/dd‘) }}</template>

</vxe-table-column>

<vxe-table-column field="date1" title="ElDatePicker" :edit-render="{type: ‘default‘}">

<template v-slot:edit="{ row }">

<el-date-picker v-model="row.date1" type="datetime" format="yyyy-MM-dd HH:mm:ss"></el-date-picker>

</template>

<template v-slot="{ row }">{{ formatDate(row.date1, ‘yyyy-MM-dd HH:mm:ss‘) }}</template>

</vxe-table-column>

<vxe-table-column field="date2" title="ElTimePicker" :edit-render="{type: ‘default‘}">

<template v-slot:edit="{ row }">

<el-time-select

v-model="row.date2"

:picker-options="{start: ‘08:30‘, step: ‘00:15‘, end: ‘18:30‘}"

></el-time-select>

</template>

</vxe-table-column>

<vxe-table-column field="rate" title="ElRate" :edit-render="{type: ‘visible‘}">

<template v-slot:edit="{ row }">

<el-rate v-model="row.rate"></el-rate>

</template>

</vxe-table-column>

<vxe-table-column field="describe" title="描述" :edit-render="{type: ‘default‘}">

<template v-slot:edit="scope">

<el-input v-model="scope.row.describe" @input="$refs.xTable.updateStatus(scope)"></el-input>

</template>

</vxe-table-column>

<vxe-table-column label="操作" width="100">

<template v-slot="scope">

<el-button size="mini" type="danger" @click="removeEvent(scope.row)">删除</el-button>

</template>

</vxe-table-column>

</vxe-table>

export default {

data() {

//自定义校验方法

const validatePass = (rule, value, callback) => {

if (value == "" || value == null) {

callback(new Error("good"));

} else {

callback();

}

};

return {

onedit: false,

regionList: [],

tableData: [],

sexList: [{ value: "0", label: "男" }, { value: "1", label: "女" }],

//验证和正常表单一样

validRules: {

name: [

{ required: true, message: "app.body.valid.rName" },

{ min: 3, max: 50, message: "名称长度在 3 到 50 个字符" }

],

sex: [{ required: true, message: "性别必须填写" }],

describe: [

{

validator: validatePass //自定义校验方法

}

]

}

};

},

methods: {

//新增数据

insertEvent(row) {

let record = {

sex: "1",

date: new Date(),

date1: new Date(),

name: "new",

describe: "GOOD"

};

this.$refs.xTable.insertAt(record, row);----------------------------------------------------------新增一行数据

// .then(({ row }) => this.$refs.xTable.setActiveCell(row, "sex"));--------------------------设置行处于编辑状态(设定焦点所在)

},

//单元格双击事件

dbclickFun(cell) {

this.onedit = false;

},

//保存数据

saveFun() {

var nowdata = this.$refs.xTable.getCurrentRow();-------------------------------------------获取当前行数据

if (nowdata != null) {

//走保存

alert(nowdata);

}

},

//下拉框改变

sexupda(scopevalue) {

scopevalue.row.describe = "改了改了";---------------------------------------------------------可更改其它内容

//this.onedit=true;

this.$refs.xTable.updateStatus(scopevalue);--------------------------------------------------更新状态

},

//时间框改变

dateupda(scopevalue) {

//this.onedit=true;

},

//格式化时间类型

formatDate(value, format) {

if (value != null && value != "") {

return this.$utils.dateToString(value, format);

}

},

//下拉框回显内容

getSelectLabel(value) {

let result = "";

if (value == "1") {

result = "女";

} else {

result = "男";

}

return result;

},

removeEvent(row) {

if (row.id) {---------------------------------------------------------------------实际应用时,可判断其它行属性(删除实际数据--走后台删除  删除临时数据则remove)

MessageBox.confirm("确定删除该数据?", "温馨提示", {

confirmButtonText: "确定",

cancelButtonText: "取消",

type: "warning"

})

.then(() => {

this.$refs.xTable.remove(row);

})

.catch(e => e);

} else {

this.$refs.xTable.remove(row);

}

}

}

};

原文地址:https://www.cnblogs.com/sky-zky/p/11670672.html

时间: 2024-10-23 02:20:18

vxe-table 可编辑表格 行内编辑以及验证 element-UI集成的相关文章

VUE+Element UI实现简单的表格行内编辑效果

原理是通过Css控制绑定的输入控件与显示值,在选中行样式下对控件进行隐藏或显示 1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="UTF-8"> 6 <!-- 引入样式 --> 7 <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-default/

[转]Laravel与bootstrap-editable实现table的行内编辑

[转]Laravel与bootstrap-editable实现table的行内编辑 准备需要的库 bootstrap3.0下载 bootstrap-table下载 x-editable-develop下载 前端处理 引入库 要使用插件,首先要在blade模板(或者说html)里引入对应的js文件和css文件 bootstrap引入 <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"/>

ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑

前言: 为了赶进度,周末也写文了! 前几篇讲完查询框和工具栏,这节讲表格数据相关的操作. 先看一下列表: 接下来我们有很多事情可以做. 1:格式化 - 键值的翻译 对于“启用”列,已经配置了格式化 #是否,已经可以看到效果了. 对于分类ID列,通常显示的是分类名称,而不是ID值. 可是分类名称不在文章表里,在文章分类表,怎么关联格式化呢? 我们有文章分类表: 所以我们写个下拉配置: 然后在配置表头里把它配置上: 效果: PS:通过自定义语句来翻译下拉项的注意事项: 1:翻译项的数量在100以下,

Easy UI实现行内编辑

最近跟着勇霞师姐做我们高校云平台的UI系统,各个系统界面的管理.UI的系统虽然很小,但是技术内容很新鲜,这篇博文就像大家介绍一下我新接触的EasyUI的知识:开启行内编辑. 效果图如下: 一.View页面 首先,引入easyui的js文件. [html] view plaincopy <link rel="stylesheet" type="text/css" href="../../Content/jquery-easyui-1.3.2/theme

JS组件系列——BootstrapTable 行内编辑解决方案:x-editable

前言:之前介绍bootstrapTable组件的时候有提到它的行内编辑功能,只不过为了展示功能,将此一笔带过了,罪过罪过!最近项目里面还是打算将行内编辑用起来,于是再次研究了下x-editable组件,遇到过一些坑,再此做个采坑记录吧!想要了解bootstrapTable的园友可以移步 JS组件系列——表格组件神器:bootstrap table. 本文原创地址:http://www.cnblogs.com/landeanfen/p/5821192.html 一.x-editable组件介绍 x

EasyUI-Datagrid行内编辑

接上一篇,这次介绍easyUI的datagrid的行内编辑单元格的功能. 关于行内编辑,我之前写过一个demo <jQuery:页面可编辑表格>,但是easyui 中早已经封装了行内单元格编辑的功能,我们在调用时只需要使用人家封装好的方法就行.这里就使用封装好的方法. 实现思路: 1.定义table 时写上监听单击事件的方法:onClickCell:onClickCell: 2.将需要编辑的<th>和<td>设置编辑的触发响应:editor:'text'.其中text只

AppBoxPro - 细粒度通用权限管理框架(可控制表格行内按钮)源码提供下载

特别声明: 提供的源代码已经包含了 AppBoxPro 的全部源代码,用 VS2012 打开项目后,直接 Ctrl+F5 可以运行起来(默认使用VS自带的LocalDB数据库). FineUIPro是商业程序,仅包含v1.7.0公测版的DLL:当然你也可以自行把 FineUIPro 换成 FineUI(开源版),开源版下载地址. AppBoxPro 是基于 FineUIPro 和 Entity Framework 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块

Easyui 编辑表格行删除

1.问题描述 easyui 编辑表格新增一条数据后,删除最后一行删除不了,原因是没有提交数据acceptChanges. 源码中deleteRow方法,根据坐标获取行html,方法为opts.finder.getTr(_7cb,_7cc).remove(). 如id="datagrid-row-r4-2-4" 代表的是第五行数据,如果是新增状态显示的是:id="datagrid-row-r4-2-0" 2.解决方法 $("[handler='removeR

Datagrid的行内编辑,Combobox的级联。

选择一个省份,市区的信息会发生相应的变化.主要是第一个combobox的值发生变化的时候,访问服务器,获得数据并赋值给第二个combobox,获取数据就是一个ajax时间,在第一个combobox中获得第二个combobox对象: .$.get(ctx+'region/ajaxRegionList.html',{parentid:newValue},function(data){ var ed=$("#"+frm+"#addresstest").datagrid('