element table组件实现可编辑的方法

我们在实际开发的过程中会遇到需要展示表格的需求,但表格不光需要回显,有时会需要向后台发送数据,怎么实现table组件可编辑,答案就是插槽。

 实现一个简单的,在其中加入下拉选择框,加入输入框,实现用户可以自填表格,这边用的是element组件

代码如下:

HTML

 <el-table
                          :data="item.tableData1"
                          border
                          :header-cell-style="{
                            background: '#f8fbff',
                            color: '#173686',
                            border: '0',
                          }"
                          style="width: 100%"
                        >
                          <el-table-column
                            label="名称"
                            align="center"
                            width="350"
                          >
                            <template slot-scope="scope">
                              <div class="noBor">
                                <el-input
                                  v-model="scope.row.paramName"
                                  placeholder="请输入"
                                ></el-input>
                              </div>
                            </template>
                          </el-table-column>
                          <el-table-column
                            label="是否必填"
                            align="center"
                            prop="mast"
                            width="225"
                          >
                            <template slot-scope="scope">
                              <el-select
                                v-model="scope.row.mast"
                                placeholder="请选择"
                              >
                                <el-option label="是" value="0"></el-option>
                                <el-option label="否" value="1"></el-option>
                              </el-select>
                            </template>
                          </el-table-column>
                          <el-table-column
                            label="说明"
                            align="center"
                            width="350"
                          >
                            <template slot-scope="scope">
                              <div class="noBor">
                                <el-input
                                  v-model="scope.row.state"
                                  placeholder="请输入"
                                ></el-input>
                              </div>
                            </template>
                          </el-table-column>
                          <el-table-column
                            label="类型"
                            align="center"
                            width="225"
                          >
                            <template slot-scope="scope">
                              <div class="noBor">
                                <el-input
                                  v-model="scope.row.type"
                                  placeholder="请输入"
                                ></el-input>
                              </div>
                            </template>
                          </el-table-column>
                          <el-table-column
                            label="备注"
                            align="center"
                            width="350"
                          >
                            <template slot-scope="scope">
                              <div class="noBor">
                                <el-input
                                  v-model="scope.row.remark"
                                  placeholder="请输入"
                                ></el-input>
                              </div>
                            </template>
                          </el-table-column>
                        </el-table>

header-cell-style是单独定义表格表头样式的方法

数据不要忘了定义:

            tableData1: [
              {
                paramName: "",
                mast: "",
                state: "",
                type: "",
                remark: "",
              },
            ],

其中input加了div是为了去掉边框,代码如下:

  .noBor {
    /deep/.el-input__inner {
      border: none;
    }
  }

当然,表格内如果是固定同一的样式,比如都需要他可输入,可以都放入input输入框,定义动态的表头,直接循环就可以

目前还没有发现如果使用动态表头,循环出来的怎么给每一项单独设置,(之前使用iview可以)

希望大佬们多多指正

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现element table表格编辑并后台提交数据,你可以按照以下步骤进行: 1. 在表格中添加编辑按钮,点击后进入编辑状态。 2. 在列属性中设置可编辑属性,这样在编辑状态下可以直接在表格中修改数据。 3. 添加保存按钮,在点击保存按钮时,获取表格中修改后的数据,将数据提交到后台进行保存。 4. 可以使用axios等工具库进行数据的发送和接收。 下面是一个简单的代码示例: ```html <template> <div> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="name" label="姓名" :editable="true"></el-table-column> <el-table-column prop="age" label="年龄" :editable="true"></el-table-column> <el-table-column label="操作"> <template slot-scope="scope"> <el-button type="text" @click="handleEdit(scope.$index)">编辑</el-button> </template> </el-table-column> </el-table> <el-button type="primary" @click="handleSubmit">保存</el-button> </div> </template> <script> import axios from 'axios'; export default { data() { return { tableData: [ { name: '张三', age: 18 }, { name: '李四', age: 20 }, { name: '王五', age: 22 } ], editIndex: -1 }; }, methods: { handleEdit(index) { this.editIndex = index; }, handleSubmit() { if (this.editIndex >= 0) { // 获取编辑后的数据 const editedData = this.tableData[this.editIndex]; // 发送数据到后台保存 axios.post('/api/saveData', editedData).then(() => { // 保存成功后取消编辑状态 this.editIndex = -1; }); } } } }; </script> ``` 在这个示例中,我们使用了element table组件,设置了两列为可编辑属性,并在操作栏中添加了一个编辑按钮。点击编辑按钮后,会进入编辑状态,此时可以直接在表格中修改数据。点击保存按钮后,会将编辑后的数据提交到后台进行保存。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值