我在树视图中放置了按钮(图标为绿色箭头)。我只想在记录有物料清单(BOM)时显示一个按钮。我确实有逻辑如何找出,但不知道如何有选择地显示或隐藏按钮。
此外,加载视图时应触发显示或隐藏按钮操作。我怎么能这样做,因为没有像Visual Basic中那样的view_on_load事件?
这是树视图:
以下是如何在XML文件中定义按钮:
<!-- mrp_bom -->
<record id="adamson_mrp_bom_form_view" model="ir.ui.view">
<field name="name">adamson.mrp.bom.form.view</field>
<field name="model">mrp.bom</field>
<field name="type">form</field>
<field name="inherit_id" ref="mrp.mrp_bom_form_view" />
<field name="arch" type="xml">
<xpath expr="//notebook/page[@string='Components']/field/tree[@string='Components']/field[@name='sequence']" position="before" >
<button class="oe_inline oe_stat_button" type="object" string="Go!" icon="gtk-go-forward" name="action_go" />
</xpath>
以下是如何查找特定产品是否有BOM的逻辑。注意bom_ids列表最有可能只有一个值。此逻辑用于按钮操作,但它可用于决定是否显示按钮。
class mrp_bom_line(osv.osv):
_inherit = 'mrp.bom.line'
def action_go(self, cr, uid, ids, context=None):
bom_obj = self.pool.get('mrp.bom')
for bom_line in self.browse(cr, uid, ids, context=context):
if bom_line.product_id.default_code > '300':
bom_ids = bom_obj.search(cr, uid, [('product_id', '=', bom_line.product_id.id)], context=context)
if bom_ids:
答案 0 :(得分:2)
您可以使用attrs例如
attrs="{'invisible':[('selection_field_name','=','value')]}"
注意:我们需要提供存储在数据库中的值。
试试这个,
<xpath expr="//notebook/page[@string='Components']/field/tree[@string='Components']/field[@name='sequence']" position="before" >
<button class="oe_inline oe_stat_button" type="object" string="Go!" icon="gtk-go-forward" name="action_go" attrs="{'invisible':[('type','=','normal')]}" />
</xpath>