原文:https://blog.csdn.net/qq_42832858/article/details/86735745
1、通过qweb模板给相应模块上的tree视图上添加上⾃定义的按钮。
在’static/src/xml’⽂件下创建⼀个xml⽂件,我的是在demo.xml⾥⾯编写如下代码:

原理就是通过css选择器找到tree视图上⾯包含按钮的div标签如上⾯代码中的 tjquery=“div.o_list_buttons” 然后通过 t-if=“widget.displayName==‘货品业务调整’” 判断在哪个页⾯中
添加按钮。代码中按钮的 create_by_dept 类名是⾃⼰定义的,到时候需要在js代码中通过类名找到该按钮给
按钮绑定⽅法和事件
2、将上⼀步中编写的qweb模板添加到manifest.py⽂件中:

3、接下来在static/src/css/js中编写⾃⼰的xxx_view.js代码给按钮绑定事件⽅法,我的测试⽂件是
bicon_list_view_button.js。下⾯给出的代码已经给出了详细的注释

odoo.define('bicon_wms_base.bicon_list_view_button', function (require) {"use strict";
//这些是调⽤需要的模块var ListView = require('web.ListView');var viewRegistry = require('web.view_registry');var ListController = require('web.ListController');
//这块代码是继承ListController在原来的基础上进⾏扩展var BiConListController = ListController.extend({renderButtons: function () {console.log('进进⼊⼊按按钮钮渲渲染染⽅⽅法法!!');this._super.apply(this, arguments);if (this.$buttons) {
//这⾥找到刚才定义的class名为create_by_dept的按钮var btn = this.$buttons.find('.create_by_dept');var btn_release_by_container = this.$buttons.find('.release_by_container');
//给按钮绑定click事件和⽅法create_data_by_deptbtn.on('click', this.proxy('create_data_by_dept'));btn_release_by_container.on('click', this.proxy('create_release_by_container'));}},create_data_by_dept: function () {var self = this;console.log('进进⼊⼊了了按按钮钮绑绑定定的的⽅⽅法法⾥⾥⾯⾯!!!!!!');
//这⾥是获取tree视图中选中的数据的记录集var records = _.map(self.selectedRecords, function (id) {return self.model.localData[id];});
console.log("数据id:" + _.pluck(records, 'res_id'));
//获取到数据集中每条数据的对应数据库id集合var ids = _.pluck(records, 'res_id');
//通过rpc调⽤路由为/cheshi/hello的controller中的⽅法
// this._rpc({
// route: '/cheshi/hello',
// params: {}
// });
//通过rpc调⽤bs.warehouse模块中的my_function⽅法this._rpc({model: 'wms.goods.log.adjust',method: 'my_function',args: [ids],}).then(function () {location.reload();});},create_release_by_container: function () {var self = this;var records =  _.map(self.selectedRecords, function (id) {return self.model.localData[id];});var ids = _.pluck(records, 'res_id');this._rpc({model:'base.container',method:'my_function',args:[ids],}).then(function () {location.reload();})},});
//这块代码是继承ListView在原来的基础上进⾏扩展
//这块⼀般只需要在config中添加上⾃⼰的Model,Renderer,Controller
//这⾥我就对原来的Controller进⾏了扩展编写,所以就配置了⼀下BiConListControllervar BiConListView = ListView.extend({config: _.extend({}, ListView.prototype.config, {Controller: BiConListController,}),});
//这⾥⽤来注册编写的视图BiConListView,第⼀个字符串是注册名到时候需要根据注册名调⽤视图viewRegistry.add('bicon_list_view_button', BiConListView);return BiConListView;
});

4.在模块的views⽂件夹下创建⼀个assets.xml的⽂件编写代码导⼊上⼀步写的js⽂件(css⽂件也是这样导⼊

<?xml version="1.0" encoding="utf-8"?>
<odoo><template id="assets_backend_bicon_wms_base_1" inherit_id="web.assets_backend" name="bicon_wms_base_assets_1"><xpath expr="link[last()]" position="after"><link rel="stylesheet" type="text/scss" href="/bicon_wms_base/static/src/scss/bicon_form_view.scss"/></xpath><xpath expr="script[last()]" position="after"><script type="text/javascript" src="/bicon_wms_base/static/src/js/bicon_relationnal_fields.js"/><script type="text/javascript" src="/bicon_wms_base/static/src/js/bicon_form_view.js"/><script type="text/javascript" src="/bicon_wms_base/static/src/js/bicon_list_view_button.js"/></xpath></template>
</odoo>

5.再将assets.xml⽂件路径添加到manifest.py⽂件中

6.调用自己的视图通过js-class值是注册的视图名:

7.被调用的model中的方法my_function:

转载于:https://blog.51cto.com/siweilai/2398603

odoo中tree视图上面添加按钮并绑定事件相关推荐

  1. jQuery给动态添加的元素绑定事件的方法

    jquery中绑定事件一般使用bind,或者click,但是这只能是对已经加载好的元素定义事件,那些后来添加插入的元素则需要另行绑定.在1.7版本以前使用live.但是在1.8版本以后推荐使用on.这 ...

  2. 3.odoo的学习(odoo中的视图:tree视图、form视图、search视图)

    目录 1.什么是视图 2.视图的声明方式 3.tree视图 4.form视图 5.search视图 6.优先级 1.什么是视图 在Odoo中,视图(view)定义了模型记录的显示方式. 每种类型的视图 ...

  3. odoo从tree视图导出excel表

    odoo从tree视图导出excel表 视图 <button type="button" class="layui-btn layui-btn-sm export& ...

  4. jQuery动态添加按钮,绑定点击事件失效

    jQuery动态添加按钮,绑定点击事件失效 因为需求需要给页面动态添加按钮并绑定点击事件进行操作, 但是发现绑定的点击事件失效. 原因分析: append中的节点是在整个文档加载完之后开始添加,因此页 ...

  5. jQuery 为动态添加的元素绑定事件

    在使用jquery的方式为元素绑定事件时,我经常使用bind或者click,但这只能为页面已经加载好的元素绑定事件.像需要用ajax的方式请求远程数据来动态添加页面元素时,显然以上几种绑定事件的方式是 ...

  6. java添加按钮点击事件_如何为odoo 10中的按钮点击事件添加一个java脚本处理程序?...

    我想使用java脚本为header中的按钮创建一个处理程序.下面我视图模型给出:如何为odoo 10中的按钮点击事件添加一个java脚本处理程序? inherit_id="web.asset ...

  7. 动态添加html元素绑定事件,关于javascript:jQuery如何将onclick事件绑定到动态添加的HTML元素...

    本问题已经有最佳答案,请猛点这里访问. 我想将onclick事件绑定到用jquery动态插入的元素 但它从不运行绑定函数.如果您能指出这个示例为什么不起作用,以及如何使它正常运行,我将非常高兴: /p ...

  8. js动态添加html元素绑定事件,JS实现动态添加DOM节点和事件的方法示例

    本文实例讲述了JS实现动态添加DOM节点和事件的方法.分享给大家供大家参考,具体如下: 运行效果图如下: 完整实例代码如下: /p> "http://www.w3.org/TR/xht ...

  9. Vue中动态加载SVG文件并绑定事件、修改节点数据

    大致的流程是这样的:实现这个需求是首先通过一个工具(drawio)去自定义绘制图形,然后导出一个svg格式的文件,后端搞了一下drawio工具的源码,在导出的时候,为绘制的图形上每个节点都去绑定了一个 ...

最新文章

  1. swoole实现数据库连接池
  2. LIBGDX游戏引擎平台介绍与搭建
  3. 16张扎心漫画,戳中女生私密日常,每一幕都很真实
  4. Spring和Amazon Web Services
  5. 【转】刨根究底字符编码之七——ANSI编码与代码页
  6. 软件工程质量管理体系要求_软件质量管理| 软件工程
  7. SAP License:结算金额大于可支配金额问题应对
  8. VIM常用的编辑操作
  9. 两种SOA平台建设方案比较
  10. 大数据:正在到来的数据革命
  11. 2016年7月17日学习 scratch 钢琴键
  12. 百鸡百钱 //公鸡5钱一只,母鸡3钱一只,小鸡1钱3只
  13. 明日之后说正在连接服务器,手游明日之后一直正在连接服务器
  14. OpenCV实战之人脸美颜美型(六)——磨皮
  15. 解决Vuser停在Gradual Exiting状态不动的问题
  16. 报错解决:Reason: Failed to determine a suitable driver class
  17. Windows10搭建opengrok服务器
  18. linux 关闭浏览器,在Linux和Windows下关闭谷歌Chrome浏览器中的通知提醒的方法
  19. 《天龙八部》之《少年游》
  20. 单片机_PWM输出原理详解

热门文章

  1. oracle--存储过程--bai
  2. ubuntu重置root密码
  3. Swing透明和变换
  4. java 过滤器filter使用案例
  5. Linux下多线程编译
  6. EditText设置可以编辑和不可编辑状态
  7. 实现自己的Linq to Sql
  8. jquery 图片切换插件(初版)
  9. 基姆拉尔森星期计算公式
  10. 用递归方法实现读取文件夹下所有文件信息