Odoo中文社区可以通过以下三个域名访问:shine-it.net , odoocn.org,odoo.net.cn

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

Crm模块中onchange_stage_id不工作的问题



  • 在crm_lead_view中,定义的stage_id,
    [code]
      <field name="stage_id" widget="statusbar" clickable="True" on_change="onchange_stage_id(stage_id)"/>
    [/code]
    我理解的意思是,在切换stege时,执行这个onchange函数,因为这个stage是可以点击的,因此我通过在界面上直接直接点击statusbar切换stage,但是我在py中的onchange_stage_id函数中增加log发现,点击切换stage的时候,并没有logo输出,我甚至注释掉onchange_stage_id这个函数,也没有任何错误提示。
    请问这个是怎么回事呢?



  • 在crm_lead_view中,定义的stage_id,
    [code]
      <field name="stage_id" widget="statusbar" clickable="True" on_change="onchange_stage_id(stage_id)"/>
    [/code]
    我理解的意思是,在切换stege时,执行这个onchange函数,因为这个stage是可以点击的,因此我通过在界面上直接直接点击statusbar切换stage,但是我在py中的onchange_stage_id函数中增加log发现,点击切换stage的时候,并没有logo输出,我甚至注释掉onchange_stage_id这个函数,也没有任何错误提示。
    请问这个是怎么回事呢?



  • 估计 widget="statusbar"  的时候, onchage 是不触发的



  • statusbar 是一个只读的控件吧?
    你怎么去 change 它呢?



  • 但是clickable是ture,是可以点击触发的,这个不算是只读控件吧。onchange这个函数是OE自带的,如果不能触发,那应该算是OE的bug吧



  • 在8.0中,在crm_lead中onchange_stage_id是工作的,但我们自建模块view中使用同样的statusbar widget,onchange却不工作。

    7.0有人报bug,代码修改了,但最后没合并。

    具体的讨论在这:
    https://bugs.launchpad.net/openerp-web/+bug/1175960


    未合并的代码:

    === modified file 'addons/web/static/src/js/view_form.js'
    --- addons/web/static/src/js/view_form.js 2013-10-10 09:11:25 +0000
    +++ addons/web/static/src/js/view_form.js 2013-10-29 12:33:10 +0000
    @@ -5452,17 +5452,17 @@
                }
            });
        },
    +    set_value_selected: function(val) {
    +        this.set({'value': val});
    +    },
        on_click_stage: function (ev) {
            var self = this;
            var $li = $(ev.currentTarget);
            var val = parseInt($li.data("id"));
            if (val != self.get('value')) {
    +            this.set_value_selected(val)
                this.view.recursive_save().done(function() {
    -                var change = {};
    -                change[self.name] = val;
    -                self.view.dataset.write(self.view.datarecord.id, change).done(function() {
    -                    self.view.reload();
    -                });
    +                self.view.reload();
                });
            }
        },


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待