2017-05-16 5 views
0

Ich habe eine Hierarchieansicht (Eltern-Kind-Objekte) für Asset erstellt. Wenn ich nun auf ein Objekt in der Liste klicke, möchte ich eine Formularansicht dieses Objekts öffnen. Folgender Code öffnet nur eine NEUE Formularansicht, irgendwelche Ideen?Odoo-Hierarchieansicht geöffnetes Formular

<record model="ir.actions.act_window" id="action_assets_hierachy"> 
     <field name="name">Assets</field> 
     <field name="type">ir.actions.act_window</field> 
     <field name="res_model">asset.asset</field> 
     <field name="view_type">tree</field> 
     <field name="view_mode">tree,form</field> 
     <field name="domain">[('parent_id','=',False)]</field> 

</record> 

<record id="assets_tree_view_inherit" model="ir.ui.view"> 
     <field name="name">asset.asset.tree</field> 
     <field name="model">asset.asset</field> 
     <field name="inherit_id" ref="asset.assets_tree_view"/> 
     <field name="field_parent">child_ids</field> 
     <field name="arch" type="xml"> 
      <xpath expr="//tree" position="replace"> 
       <tree toolbar="1"> 
        <field icon="icon" name="asset_number"/> 
        <field name="display_name"/> 
        <field name="name"/> 
        <field name="user_id"/> 
       </tree> 
      </xpath> 
     </field> 
</record> 

<record id="asset_form" model="ir.actions.act_window"> 
     <field name="name">Assets</field> 
     <field name="type">ir.actions.act_window</field> 
     <field name="res_model">asset.asset</field> 
     <field name="view_type">form</field> 
     <field name="view_mode">form,kanban</field> 
</record> 

<record id="ir_asset_form_open" model="ir.values"> 
     <field eval="'tree_but_open'" name="key2"/> 
     <field eval="'asset.asset'" name="model"/> 
     <field name="name">Assets</field> 
     <field eval="'ir.actions.act_window,%d'%asset_form" name="value"/> 
</record> 

<menuitem name="Asset Hierarchy" id="asset_hierarchy" parent="asset.menu_maintenance_assets" action="action_assets_hierachy"/> 

Antwort

0

Entfernen Sie den:

<record id="asset_form" model="ir.actions.act_window"> 
     <field name="name">Assets</field> 
     <field name="type">ir.actions.act_window</field> 
     <field name="res_model">asset.asset</field> 
     <field name="view_type">form</field> 
     <field name="view_mode">form,kanban</field> 
</record> 

Warum brauchen Sie diese Aktion?

<record model="ir.actions.act_window" id="action_assets_hierachy"> 
     <field name="name">Assets</field> 
     <field name="type">ir.actions.act_window</field> 
     <field name="res_model">asset.asset</field> 
     <field name="view_type">tree</field> 
     <field name="view_mode">tree,form</field> 
     <field name="domain">[('parent_id','=',False)]</field> 

</record> 

zu:

<record model="ir.actions.act_window" id="action_assets_hierachy"> 
     <field name="name">Assets</field> 
     <field name="type">ir.actions.act_window</field> 
     <field name="res_model">asset.asset</field> 
     <field name="view_type">form</field> 
     <field name="view_mode">tree,form</field> 
     <field name="domain">[('parent_id','=',False)]</field> 

</record> 
1

Sie müssen irgendeine Art von JavaScript Modifikation dies zu erreichen

Auch die ändern. Es gibt eine Funktion namens "activate" in web/treeview.js, die das Ereignis behandelt, wenn ein Element geklickt hat. Sie müssen es folgendermaßen erweitern:

odoo.define('web.ListViewClickable', function (require) { 
"use strict"; 

var TreeView = require('web.TreeView'); 

TreeView.include({ 
    activate: function(id){ 
     var self = this; 
     var result = self._super(id); 
     if (self.model == 'your_model'){ //Only if you want to apply this to specific model 
      self.do_action({ 
        type: 'ir.actions.act_window', 
        res_model: self.model, 
        view_type: 'form', 
        view_mode: 'form', 
        res_id: id, 
        views: [[false, 'form']], 
       }); 
     } 
     return result; 
    }, 
}); 
}); 
Verwandte Themen