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

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

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

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

odoo12 中在tree视图中新增自定义按钮



  • 我需要在odoo的tree视图上面的创建/导入按钮旁边增加新的自定义按钮,我按照其他的示例写了一部分代码,现在我在前端可以显示我增加的按钮,但是点击按钮后没有任何反应,下面的是我的js 代码:

    odoo.define('dwapp', function(require){
        "use strict";
    
        var show_button_model = ['dwapp',];
        var core = require('web.core');
        var myListView = require('web.ListView');
        var QWeb = core.qweb;
        console.log("33333");
        myListView.include({
            render_buttons: function($node){
                var self = this;
                this._super($node);
                console.log("123455");
                var tree_model = this.dataset.model;
                for(var i = 0; i < show_button_model.length; i++){
                    console.log("66666");
                    this.$buttons.find('.o_list_tender_button_tree').click(this.proxy('tree_view_action'));
                }
            },
            tree_view_action: function() {
            console.log("222222");
            this.do_action({
                type: "ir.actions.act_window",
                name: "数据库APP",
                res_model: 'dwapp',
                views: [[false,'form']],
                target: 'current',
                view_type: 'form',
                view_mode: 'form',
                flags: {'form':{'action_buttons':true, 'options':{'mode':'edit'}}}
            });
            return {'type':'ir_actions_client','tag':'reload',}
        }
        });
    
        console.log("00000");
    });
    

    哪位大佬帮忙看看,有没有错误,这段代码可以在console中打印出33333,说明这之前的部分没有问题,主要是myListView这一部分有问题。

    PS:我的环境是odoo12 社区版


  • 管理员



  • @ssun 这个js里面的有些属性在odoo11里面就已经不适用了,明显的:

    var myListView = require('web.ListView');  
    var tree_model = this.dataset.model;
    

    下面是我测试odoo11,odoo12都可以使用的,你对照看看:

    odoo.define('xxx.add_tree_view_button', function (require) {
        "use strict";
    
        var show_button_model = ['product.template'];//哪些模型显示导入按钮
        var ListController = require('web.ListController');
    
        ListController.include({
            renderButtons: function ($node) {
                var $buttons = this._super.apply(this, arguments);
                var tree_model = this.modelName;
                for(var i=0; i<show_button_model.length; i++) {
                    if (tree_model == show_button_model[i]){
                        var button2 = $("<button type='button' class='btn btn-sm btn-default'>Import Excel</button>")
                            .click(this.proxy('popup_import_wizard'));
                        this.$buttons.append(button2);
                    }
                }
                return $buttons;
            },
            popup_import_wizard: function () {
                this.do_action({
                    type: 'ir.actions.act_window',
                    res_model: 'import.wizard',
                    views: [[false, 'form']],
                    view_mode: "form",
                    view_type: 'form',
                    view_id: 'import_wizard_form',
                    target: 'new',
                });
            },
        });
    
    });
    


  • @hui 按照你的方法我可以实现了,非常感谢



  • @ssun 客气,主要是我也遇到过这问题,而且也是在你贴出来的的代码上进行改进的。有社区朋友的帮助的哦~🙂



  • @ssunodoo12 中在tree视图中新增自定义按钮 中说:

    请问有什么办法可以在指定的一个tree_view中使用这个呢?一个模型有多个tree_view。