4

我有一个列出很多项目的视图。当用户选择任何人时,会出现一个具有扩展功能的版本向导。向导的某些操作使其关闭但父视图未刷新显示旧数据。

我需要在 OpenERP 向导视图的按钮中执行的操作刷新父视图。

我努力了:

def some_action(self, cr, uid, ids, context=None):
    ....
    res = {'type':'ir.actions.act_window_close', 'auto_refresh':'1' }
    return res

并尝试了这个:

def some_action(self, cr, uid, ids, context=None):
    ....
    win_obj = self.pool.get('ir.actions.act_window')
    res = win_obj.for_xml_id(cr, uid, 'parent_module', 'parent_view', context)
    res = {'type':'ir.actions.act_window_close', 'auto_refresh':'1' }
    return res

和这个:

def some_action(self, cr, uid, ids, context=None):
    ...
    mod_obj = self.pool.get('ir.model.data')
    view_rec = mod_obj.get_object_reference(cr, uid, 'hr_holidays', 'open_ask_holidays')
    view_id = view_rec and view_rec[1] or False
    return {
       'view_type': 'form',
       'view_id' : [view_id],
       'view_mode': 'form',
       'res_model': 'model.obj.here',
       'type': 'ir.actions.act_window',
       'context': context
    } 

但没有任何效果...

4

2 回答 2

6

正确的形式是:

def some_action(self, cr, uid, ids, context=None):
    ....
    res = { 'type': 'ir.actions.client', 'tag': 'reload' }
    return res

我在这里找到了它:

“向导操作后如何刷新原始视图?”。OpenERP知识库

于 2013-09-04T23:28:05.907 回答
3

按照@yucer 提供的链接,我发现可以在不重新加载视图的情况下刷新字段值。

openerp.your_module_name = function (instance) {
    instance.web.ActionManager = instance.web.ActionManager.extend({

        ir_actions_act_close_wizard_and_refresh_view: function (action, options) {
            if (!this.dialog) {
                options.on_close();
            }
            this.dialog_stop();
            this.inner_widget.views[this.inner_widget.active_view].controller.reload();
            return $.when();
        },
    });
}

关闭向导视图时调用操作:

return { 'type' :  'ir.actions.act_close_wizard_and_refresh_view' }
于 2017-01-08T10:39:18.040 回答