vx-table可编辑表格父子组件问题

文章详细描述了在VXTable中实现单元格编辑及嵌套下拉框的功能,包括点击单元格弹出下拉框、选中下拉数据同步更新、单元格搜索与下拉联动以及下拉框作为独立子组件的解耦方法。示例代码展示了如何配置和交互以达成这些功能。
摘要由CSDN通过智能技术生成

记录一下前端遇到的问题
1vx-table可编辑表格中的单元格嵌套下拉容器
①实现点击单元格,单元格可编辑,同时弹出下拉框
②实现选中下拉框的数据可以同步更新到表格中
③实现单元格支持搜索可以喝下拉框的数据联动
④实现下拉容器解耦,作为一个子组件嵌套进页面中

链接: vxtable官网

官网前端例子

 <vxe-table
          border
          show-overflow
          keep-source
          ref="xTable"
          max-height="400"
          :data="tableData"
          @cell-selected="cellSelectedEvent"
          @edit-closed="editClosedEvent"
          @current-change="currentChangeEvent"
          :edit-rules="validRules"
          :mouse-config="{ selected: true }"
          :row-config="{ isCurrent: !0, isHover: !0 }"
          :keyboard-config="{
            isEnter: true,
            isTab: true,
            isEdit: true,
            editMethod,
            enterToTab: true,
          }"
          :edit-config="{
            trigger: 'click',
            mode: 'cell',
            icon: 'vxe-icon-edit',
            showStatus: true,
          }"
        >
 <vxe-column
            field="code"
            title="代码"
            :edit-render="{
              autofocus: '.vxe-input--inner',
              autoselect: true,
              placeholder: '请点击输入...',
            }"
            width="100"
          >
            <template #edit="{ row }">
              <vxe-pulldown ref="xDown4" transfer>
                <template #default>
                  <vxe-input
                    ref="input1"
                    v-model="row.code"
                    placeholder="xxxxx"
                    @focus="focusEvent4({ row })"
                    @suffix-click="suffixClick4({ row })"
                  ></vxe-input>
                </template>
                <template #dropdown>
                  <div class="my-dropdown2">
                    <div class="my-dropdown2">
                    <vxe-grid
                      ref="ChargeItemTable"
                      width="300"
                      border
                      auto-resize
                      height="300"
                      :row-config="{ isHover: true, isCurrent: true }"
                      :keyboard-config="{ isArrow: true }"
                      :pager-config="tablePage4"
                      :data="chargeItemList"
                      :columns="chargeItemColumnList"
                      @cell-dblclick="cellClickEvent2"
                      @page-change="pageChangeEvent2"
                      @keydown="keySetEvent($event)"
                    >
                    </vxe-grid>
                  </div>
                </template>
              </vxe-pulldown>
            </template>
          </vxe-column>

          <vxe-column field="name" title="名称" :edit-render="{}" width="200">
            <template #default="{ row }">
              <span>{{ row.name }}</span>
            </template>
          </vxe-column>

注意点

1 可编辑表格的默认绑定和可编辑的绑定可以同时出现

          <template #default="{ row }">
          </template>
          <template #edit="{ row }">
          </template>

2常用的API

@edit-closed
@current-change
@cell-dblclick
@edit-actived

$table.insertAt()新增临时数据
$table.setEditCell()设置单元格可编辑状态
$table.getRecordset()获取临时新增,修改,删除的数据
$table.getCurrentRecord()获取当前高亮行的Row对象
$table.isUpdateByRow() 判断是否被删除

将官网例子改为 父子组件

import ChargeItemDownTable from './ChargeItemDownTable';
//注册子组件
 components: { ChargeItemDownTable },

//使用
<vxe-column field="itemCode" title="代码" minWidth="67":edit-render="{ autofocus: '.vxe-input--inner' }"  >
              <template #edit="{ row }">
                <ChargeItemDownTable
                  v-model="row.itemCode"
                  placeholder="请选择项目"
                  :bindData="row"
                  :params="{ keywordName: 'name' }"
                  @childFn="selectItem"
                >
                  <vxe-column field="name" title="名称" />
                </ChargeItemDownTable>
              </template>
 </vxe-column>

父向子组件传值

//子组件中的props
 props: {
    params: {
      type: Object,
      default: () => ({})
    },
    //绑定对象用于handleOk原路返回
    bindData: {
      type: Object,
    },
  }

子组件向父组件传值

//子组件发送数据   record 是参数
 this.$emit('childFn', record)
 
 //父组件接受
 selectItem (record) {
  var currentRow = $table.getCurrentRecord()
  currentRow.record=record.code
 }

效果图

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
DataGridView是Windows Forms中常用的表格控件,它提供了下拉框编辑功能,可以让用户通过下拉选择来编辑单元格的内容。要实现DataGridView可编辑的下拉框,首先需要为单元格添加一个下拉框控件作为编辑控件。可以通过DataGridView的EditingControlShowing事件来实现这个功能。当单元格进入编辑状态时,会触发EditingControlShowing事件,我们可以在这个事件中判断当前单元格的列是否是需要下拉框编辑的列,如果是,则可以将一个下拉框控件赋值给当前单元格的编辑控件。 接着,我们需要为下拉框控件添加数据源,以便用户可以从下拉框中选择相应的内容。可以为下拉框控件的DataSource属性赋值一个数据源,比如DataTable、List等,然后再设置下拉框控件的DisplayMember和ValueMember属性,指定要显示的内容和对应的值。这样下拉框中就会显示数据源中的内容,并且用户可以通过下拉选择来编辑单元格的内容。 最后,还需要处理用户编辑下拉框后的值,可以通过DataGridView的CellEndEdit事件来实现。当用户完成对单元格的编辑后,会触发CellEndEdit事件,我们可以在这个事件中获取用户编辑后的值,并更新到相应的数据源中。 通过以上步骤,就可以实现DataGridView可编辑的下拉框功能,用户可以通过下拉框选择内容来编辑单元格的值,从而提高了数据的输入效率和准确性。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值