首页 > 其他分享 >odoo16弹出对话框中显示SearchPanel

odoo16弹出对话框中显示SearchPanel

时间:2023-06-11 10:36:10浏览次数:41  
标签:web SearchPanel 对话框 odoo16 员工 弹出 patch

在odoo中,有些数据模型的Search视图可能会定义关于SearchPanel的部分,但这部分定义不会在弹出对话框中显示。如员工的list视图显示如下:

 

但如果我们在一个挑选员工的弹出对话框中,显示是这样子的。

 

这样如果员工较多,我们还要进一步输入搜索条件来进行过虑,不太方便操作。那如果我们要在弹出的对话框中也显示出SearchPanel的部分,通过部门选择来快速的进行过滤呢?

为此我们查看了一下odoo的源码,在web\static\src\views\view_dialogs\select_create_dialog.js文件中,有如下定义:

 

这里默认所有弹出的对话框中都是不显示searchPanel的。知道了这个,那我们自己要修改的话就比较简单了。

我们可以扩展这个SelectCreateDialog组件,通过patch方法将这个默认值进行修改。所以我们就随便加了一个js文件,将如下代码加入js中。

 

 

/** @odoo-module **/

import {patch} from "@web/core/utils/patch";
import {SelectCreateDialog} from "@web/views/view_dialogs/select_create_dialog";

patch(SelectCreateDialog.prototype, "og_web_dialog_searchpanel.SelectCreateDialog", {
    setup() {
        this._super(...arguments);
        this.baseViewProps = Object.assign(this.baseViewProps, {display: { searchPanel: true }});
    }
});

  

把这个代码的js放到模块中加载就可以了。我们再来看看挑选员工的对话框效果。

 

有了这个SearchPanel的显示以后,我们就可以对弹出的记录进行默认过滤了。比如我们在设置员工的经理时,弹出的对话框,默认不要显示全部员工,而是显示当前员工同部门下的员工。这样就能快速定位到需要选择的员工。这里只要在经理字段加一个上下文定义:

 

 


<field name="parent_id" context="{'searchpanel_default_department_id':department_id}"/>

 

其中这里的'searchpanel_default_'是固定的,表示设置searchPanel的默认值。后面的department_id是在xml定义中的name属性值。

以上就是这次的小改动,如果需要获取源码,可以在后台回复'searchpanel‘,将获得源码在github上的地址。

标签:web,SearchPanel,对话框,odoo16,员工,弹出,patch
From: https://www.cnblogs.com/pythonClub/p/17472575.html

相关文章

  • QT 中的模态和非模态对话框
    voidMainWindow::on_pushButton_clicked(){//模态QDialogdlg(this);dlg.resize(100,100);dlg.exec();qDebug()<<"helloworld";//非模态QDialog*dlg2=newQDialog(this);dlg2->resize(200,200);//释放内存,......
  • 对话框变化大小后。CBCGPListCtrl、CListCtrl重新显示行数列数m_list_.Arrange(LVA_AL
    h文件中afx_msgvoidOnSize(UINTnType,intcx,intcy);voidResizeUI();vector<CRect>m_vec_rect_; BEGIN_MESSAGE_MAP(CDlgXXX,CBCGPDialog) ON_WM_SIZE() END_MESSAGE_MAP()BOOLCDlgXXX::OnInitDialog(){ CBCGPDialog::OnInitDialog(); EnableVisua......
  • Asp.net MVC 3实例学习之ExtShop(六)——登录对话框
         登录对话框将使用jquery提供的对话框,所以不需要添加其它js文件。首先要为登录对话框添加一个表单模型。在Models目录下创建一个“AccountModels”类文件,然后添加一个Logon类,代码如下:1     public class LogOnModel2     {3      ......
  • odoo16里面的常用方法
    一、全局搜索与显示defname_get(self):res=[]fororderinself:name=order.nameiforder.draw_number:name="%s-%s"%(name,order.draw_number)res+=[(order.id,name)]......
  • DevExpress输入对话框使用3
    1、引用单元dxInputDialogs2、方法dxInputQuery(string,string,string,TdxInputQueryValidationProc)定义:functiondxInputQuery(constACaption:string;constAPrompt:string;varAValue:string;AValidationProc:TdxInputQueryValidationProc):Boolean;参数:名称类型说明......
  • DevExpress输入对话框用法1
    1、引用单元dxInputDialogs2、方法dxInputBox(string,string,string)定义:functiondxInputBox(constACaption:string;constAPrompt:string;constADefaultValue:string):string;参数:名称类型说明ACaptionstring标题APromptstring文本提示ADefaultValue......
  • (libgdx小结)window(游戏对话框的使用)
    packagecom.example.groupactiontest;importcom.badlogic.gdx.ApplicationListener;importcom.badlogic.gdx.Gdx;importcom.badlogic.gdx.graphics.GL10;importcom.badlogic.gdx.graphics.Texture;importcom.badlogic.gdx.graphics.g2d.BitmapFont;importcom.ba......
  • windows-"运行"对话框-命令
    打开"运行"对话框:按win+R......
  • 组件化对话框
    引用处<template><!--利用obj传递参数--><Dialog:obj="data.permissionDialog"ref="permissionDialog"/></template><scriptsetup>importDialogfrom"@/components/Dialog.vue";constdata=reactiv......
  • AlertDialog(对话框)详解
    本节继续给大家带来是显示提示信息的第三个控件AlertDialog(对话框),同时它也是其他Dialog的的父类!比如ProgressDialog,TimePickerDialog等,而AlertDialog的父类是:Dialog!另外,不像前面学习的Toast和Notification,AlertDialog并不能直接new出来,如果你打开AlertDialog的源码,会发现构造方法......