跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. [已解决]根据条件隐藏掉数据的同时隐藏掉删除按钮

[已解决]根据条件隐藏掉数据的同时隐藏掉删除按钮

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
10 帖子 3 发布者 2.9k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • H 离线
    H 离线
    hui
    写于 最后由 hui 编辑
    #1

    根据条件隐藏部分数据,在one2many字段显示的时候,发现数据没有显示,但是这一行数据后面的删除按钮没有隐藏掉,这个怎么把删除的按钮页隐藏掉啊。如下图所示:
    0_1531276845703_b18c4f39-435c-44f0-a567-17275117be66-image.png

    H 鲍 2 条回复 最后回复
    0
    • H 离线
      H 离线
      hui
      在 回复了 hui 最后由 编辑
      #2

      @hui
      在odoo11下是写了这么一个js实现的。思路是如果form视图中的o2m字段的展示数据的td中都有o_data_cell和o_invisible_modifier的话,隐藏掉这一行。

      还有一个问题是:如果这个o2m的数据很多,导致分页的话,可能导致,某一页的显示的是没数据,但是这一页还是存在的。如下图:

      odoo.define('upi.hide_invisible_tr', function(require){
      "use strict";
      
          var ListRenderer = require('web.ListRenderer');
      
          ListRenderer.include({
              _renderRow: function (record) {
                  var $tr = this._super.apply(this, arguments);
                  for(var i=0; i<$tr.length;i++){
                      var $td = $tr.find('td');
                      var k = 0;
                      for(var j=0; j<$td.length;j++){
                          if($td.hasClass('o_data_cell')&&$td.hasClass('o_invisible_modifier')){
                              k += 1;
                          }
                      }
                      if($td.length == k){
                          $tr.attr("style","display:none");
                      }
                  }
                  return $tr;
              },
          });
          return ListRenderer;
      });
      

      0_1531211079222_Screenshot from 2018-07-10 16-24-25.png

      1 条回复 最后回复
      0
      • 静静静 离线
        静静静 离线
        静静
        写于 最后由 编辑
        #3

        说名你用这个属性的地方是不对的。要在render的时候把隐藏的数据不传的qweb 的templates中

        H 1 条回复 最后回复
        0
        • 鲍 离线
          鲍 离线
          鲍永道
          在 回复了 hui 最后由 编辑
          #4

          @hui 扩展js是可以根据列表中的某个数据进行判断是否隐藏删除按钮的。

          H 1 条回复 最后回复
          0
          • H 离线
            H 离线
            hui
            在 回复了 静静 最后由 编辑
            #5

            @静静 代码如下。
            我就是在满足条件的时候想隐藏该行数据,我把条件写在了每个字段上,所以会有这种问题的。那你看我这种应该使用什么属性合适?

            <page string="Page 1">
                                                <field name="line_ids" nolabel="1">
                                                    <tree editable="bottom">
                                                        <field name="is_cnaus_purchase" invisible="1"/>
                                                        <field name="page"/>
                                                        <field name="state" widget="handle"
                                                               attrs="{'invisible': ['|', '|', ('is_cnaus_purchase', '=', True),('page', '&lt;', 1),
                                                        ('page', '&gt;', 1)]}"/>
                                                        <field name="part_number"
                                                               attrs="{'invisible': ['|', '|', ('is_cnaus_purchase', '=', True),('page', '&lt;', 1),
                                                        ('page', '&gt;', 1)]}"/>
                                                        <field name="description"
                                                               attrs="{'invisible': ['|', '|', ('is_cnaus_purchase', '=', True),('page', '&lt;', 1),
                                                        ('page', '&gt;', 1)]}"/>
                                                        <field name="qty"
                                                               attrs="{'invisible': ['|', '|', ('is_cnaus_purchase', '=', True),('page', '&lt;', 1),
                                                        ('page', '&gt;', 1)]}"/>
                                                     </tree>
                                                </field>
                                            </page>
            
            1 条回复 最后回复
            0
            • H 离线
              H 离线
              hui
              在 回复了 鲍永道 最后由 编辑
              #6

              @鲍永道 以下是我的理解。
              1、o2m字段在浏览器里面展示出来的布局是,table,tr, td实现的。如果我隐藏掉了删除按钮,其他字段的td我也隐藏掉了,但是这个tr还在,所以只有是这行数据是全部需要隐藏的,就会显示成一个空行的。所以我觉得不能单独隐藏一个td,应该是,如果这个tr里面的td都有隐藏的class,那么我就应该隐藏这一行的数据。

              2、至于你说的扩展的js应该根据列表中的某个数据进行判断,是odoo的扩展js都有这一个隐形要求吗?但是我这个js导入以后是全局起作用的啊,难道非要指定在某个model里面的某个field有效果才行?

              鲍 1 条回复 最后回复
              0
              • 鲍 离线
                鲍 离线
                鲍永道
                在 回复了 hui 最后由 编辑
                #7

                @hui 在 根据条件隐藏掉数据的同时隐藏掉删除按钮 中说:

                字段在浏览器里面展示出来的布局是,table,tr, td实现的。如果我隐藏掉了删除按钮,其他字段的td我也隐藏掉了,但是这个tr还在,所以只有是这行数据是全部需要隐藏的,就会显示成一个空行的。所以我觉得不能单独隐藏一个td,应该是,如果这个tr里面的td都有隐藏的class,那么我就应该隐藏这一行的数据。

                可以对应模型,对应数据的,都是可以最判断的,页面上能看到的,js中都可以获取到。

                H 1 条回复 最后回复
                0
                • H 离线
                  H 离线
                  hui
                  在 回复了 鲍永道 最后由 编辑
                  #8

                  @鲍永道
                  我想知道有没有这样一个隐形的规定,扩展的js必须是针对某一个字段的,或者说像我这样写的话有没有什么弊端?

                  鲍 2 条回复 最后回复
                  0
                  • 鲍 离线
                    鲍 离线
                    鲍永道
                    在 回复了 hui 最后由 编辑
                    #9

                    @hui 是可以根据列表中的某个字段的值来判断删除是否要隐藏。

                    1 条回复 最后回复
                    0
                    • 鲍 离线
                      鲍 离线
                      鲍永道
                      在 回复了 hui 最后由 编辑
                      #10

                      @hui 比如说有个state字段表示状态,当状态为0的时候隐藏去除删除图标。

                      1 条回复 最后回复
                      0

                      • 登录

                      • 没有帐号? 注册

                      • 登录或注册以进行搜索。
                      • 第一个帖子
                        最后一个帖子
                      0
                      • 版块
                      • 标签
                      • 热门
                      • 用户
                      • 群组