当前位置:网站首页>JEditableTable的使用技巧

JEditableTable的使用技巧

2022-07-07 05:27:00 OK_boom

JEditableTable使用默认的条件进行查询

JEditableTable靠织入JeecgListMixin来实现查询,created的时候会优先执行JVxeTableModelMixin的created,所以会优先load一次data。
好在它有个开关可以关闭它自动加载数据。
在我们自己的查询vue处理上,在data里加入disableMixinCreated:true并且在created里面自己手动加载数据即可。

created() {
  this.getSuperFieldList()
  this.$nextTick(()=>{
    if (this.type=='purchase'){
      this.$set(this.queryParam,'approved',"1")
    }
    this.loadData();
    //初始化字典配置 在自己页面定义
    this.initDictConfig();
  })
}

JEditableTable修改记录的默认值

尝试了很多种方案,最后确定要修改JEditableTable的dataSource并需要触发它的监听功能才能将新的数据加载到界面,但JEditableTable的dataSource 监听没有deep,要加上才能监听到dataSource内容的变化。

dataSource: {
    
        immediate: true,
        deep: true,
        handler: function (newValue) {
    
          // 兼容IE
          this.getElementPromise('tbody').then(() => {
    
            this.initialize()
            this._pushByDataSource(newValue)
          })
        }
      },

下面要实现的是,当数据联动让JEditableTable里面的select类型的字段的options重新刷新并将JEditableTable所有记录这个字段的值清空

async prodCatChange(value){
    
//tbVendor 是JEditableTable实例
      let tbVendor = await getRefPromise(this, 'smpProductVendor')
      let column=tbVendor.columns.filter(m=>m.key=='vendorId')[0]
      column.options=[]//必须清空,不然会记录叠加
      tbVendor._loadDictConcatToOptions(column)
      let dataSource=this.smpProductVendorTable.dataSource
      dataSource.forEach(item=>{
    
        item.vendorId='.'
      })
      dataSource.forEach(item=>{
    
        item.vendorId=''
      })
    },      

代码里为什么要将vendorId设置两次? 因为设置一次的话,重复执行这个方法它就无法再次触发tbVendor的dataSource监听。

在这里插入图片描述

原网站

版权声明
本文为[OK_boom]所创,转载请带上原文链接,感谢
https://rocklee.blog.csdn.net/article/details/125636747