User interface 在树状视图Odoo 13外添加按钮
你好 有没有办法在Odoo中的树状视图上方添加一个按钮User interface 在树状视图Odoo 13外添加按钮,user-interface,button,treeview,odoo,odoo-13,User Interface,Button,Treeview,Odoo,Odoo 13,你好 有没有办法在Odoo中的树状视图上方添加一个按钮 我想在用户单击按钮时运行一个函数 如果这是不可能的,你能帮我一个替代方案吗 以下是我的查看代码: '''<?xml version="1.0" encoding="utf-8"?> <odoo> <record id="account_payment_import_view_tree" model="ir.ui.view"&
我想在用户单击按钮时运行一个函数
如果这是不可能的,你能帮我一个替代方案吗 以下是我的查看代码:
'''<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="account_payment_import_view_tree" model="ir.ui.view">
<field name="name">account.payment.import.view.tree</field>
<field name="model">account.payment.import</field>
<field name="arch" type="xml">
<tree string="Payment Imports" decoration-info="payment_id != False" decoration-danger="error_msg != False">
<field name="transaction_date"/>
<field name="facts_id"/>
<field name="paid_in_lei"/>
<field name="paid_in_euro"/>
<field name="amount"/>
<field name="account"/>
<field name="account_no"/>
<field name="document_no"/>
<field name="details_bk_statement"/>
<field name="error_msg"/>
<field name="invoice_number" invisible="1"/>
<field name="payment_id" widget="many2onebutton" invisible="1"/>
<field name="invoice_id" widget="many2onebutton" invisible="1"/>
<field name="company_id" invisible="1"/>
<field name="currency_id" invisible="1"/>
</tree>
</field>
</record>
<record id="account_payment_import_action" model="ir.actions.act_window">
<field name="name">Payment Imports</field>
<field name="res_model">account.payment.import</field>
<field name="view_mode">tree</field>
<field name="domain">[]</field>
<field name="context">{'edit': 0}</field>
</record>
<menuitem
id="account_payment_import_menu"
name="Payment Imports"
action="account_payment_import_action"
parent="account.menu_finance_receivables"
sequence="160"/>
</odoo>'''
“”
account.payment.import.view.tree
帐户、付款、进口
进口支付
帐户、付款、进口
树
[]
{'edit':0}
'''
好吧,下面是我在树状视图中获取按钮的尝试。我会一步一步地给你解释清楚
首先,我们必须通过qweb将按钮添加到树视图中,从web模块继承树视图。
这将使我们的新按钮出现在所有树视图中,这是我们不希望看到的。为了避免这种情况,我们添加了一个条件t-if='widget.modelName==“account.payment.import”
,这将导致仅为我们感兴趣的模型的视图生成按钮。我们还添加了一个CSS类oe_new_custom_button
,以便能够从javascript中识别按钮
让我们调用包含此qweb的文件tree\u view\u button.xml,并将其放入您的\u模块\u name/static/src/xml
自定义按钮
其次,我们必须赋予按钮功能,我们通过javascript实现这一点
在这里,我们继承了树视图控制器,称为ListController,它的作用是在控制面板中呈现和绑定所有额外的按钮/寻呼机等
让我们调用包含此javascript的文件tree\u view\u button.js,并将其放入您的\u模块\u name/static/src/js
odoo.define('your_module_name.tree_view_button')函数(require){
“严格使用”;
var ajax=require('web.ajax');
var ListController=require('web.ListController');
ListController.include({
renderButtons:函数($node){
这个._super.apply(这个,参数);
var self=这个;
如果(此为$buttons){
$(此.$按钮)。查找('.oe_新建_自定义_按钮')。打开('单击',函数()){
//自定义代码
});
}
},
});
});
最后,我们将javascript添加到odoo资产中,并配置清单以接受所有更改
让我们调用包含资产的文件assets.xml,并将其放入您的\u模块\u name/views
这就是它应该看起来的样子
{
“数据”:[
[ ... ]
“views/assets.xml”,#好吧,下面是我在树状视图中获取按钮的尝试。我将尝试一步一步地向您解释
首先,我们必须通过qweb将按钮添加到树视图中,从web模块继承树视图。
这将使我们的新按钮出现在所有树视图中,这是我们不希望看到的。因此,为了避免出现这种情况,我们添加了一个条件t-if='widget.modelName==“account.payment.import”“
这将导致仅为我们感兴趣的模型视图生成按钮。我们还添加了一个CSS类oe_new_custom_button
,以便能够从javascript中识别按钮
让我们调用包含此qweb的文件tree\u view\u button.xml,并将其放入您的\u模块\u name/static/src/xml
自定义按钮
其次,我们必须赋予按钮功能,我们通过javascript实现这一点
在这里,我们继承了树视图控制器,称为ListController,它的作用是在控制面板中呈现和绑定所有额外的按钮/寻呼机等
让我们调用包含此javascript的文件tree\u view\u button.js,并将其放入您的\u模块\u name/static/src/js
odoo.define('your_module_name.tree_view_button')函数(require){
“严格使用”;
var ajax=require('web.ajax');
var ListController=require('web.ListController');
ListController.include({
renderButtons:函数($node){
这个._super.apply(这个,参数);
var self=这个;
如果(此为$buttons){
$(此.$按钮)。查找('.oe_新建_自定义_按钮')。打开('单击',函数()){
//自定义代码
});
}
},
});
});
最后,我们将javascript添加到odoo资产中,并配置清单以接受所有更改
让我们调用包含资产的文件assets.xml,并将其放入您的\u模块\u name/views
这就是它应该看起来的样子
{
“数据”:[
[ ... ]
“views/assets.xml”,#可选:操作菜单服务器操作。Odoo中已有示例,例如sale.order
的树视图中的“将报价标记为已发送”。可选:操作菜单服务器操作。Odoo中已有示例,例如sale.order
的树视图中的“将报价标记为已发送”。