SuiteCRM自定义筛选界面 (Popup)


  1. 筛选界面显示自定义
  2. 自定义筛选条件字段
  3. 关于列表排序

Popup视图关系图

1. 筛选界面显示自定义

定义文件结构

<?php
$popupMeta = array ('moduleMain' => 'HAC_Bank_Accounts','varName' => 'HAC_Bank_Accounts',//排序字段,可以扩展成多个字段'orderBy' => 'hac_bank_accounts.name','whereClauses' => array (//请求参数到数据库字段的映射
),//追加查询语句'whereStatement' => '''searchInputs' => array (//请求参数名
),'searchdefs' => array (//搜索字段定义
),'listviewdefs' => array (//结果列表字段定义
)
);

1.增加字段和自定义

在对应定义添加字段定义即可:

'CONTRACT_NAME' =>array (//字段类型'type' => 'relate','default' => true,//是否在工作室中显示'studio' => 'visible',//标签名,可自定义'label' => 'LBL_CONTRACT_NAME_1',//宽度'width' => '24%',//对应模块字段名,可省略'name'  => 'contract_name'//附加参数'displayParams'=> array() //...),

对于列表定义注意需设置
'default' => true,,否则不会显示列

2. Popup视图的调用

前端调用

open_popup(module_name, //模块名width,       //窗口宽度height,      //窗口高度initial_filter,       //追加查询条件close_popup,          //是否自动关闭,,默认truehide_clear_button,    //是否隐藏清除按钮,默认truepopup_request_data,   //请求报文,处理选择后的回调popup_mode,           //POPUP模式(多选和单选),多选时,返回记录ID为键数组create,               //默认false,是否可创建模块metadata              //指定使用的popup定义文件名称
)

请求报文定义,可附加在编辑界面的字段定义中

popupRequestData = {"call_back_function" : "setFuncReturn",//回调函数"form_name" : "EditView",//返回值和页面元素映射"field_to_name_array" : {"id":"line_function_id","name":"line_function_name","func_icon":"line_func_icon",}}

3. Popup列表添加字段
包括在自定义列表表头和添加非本模块字段,修改表头通过添加label可以实现,添加字段包块以下两步:
其一、在popupdef的listviewdefs中添加字段定义

'CONTRACT_NUMBER' =>array('type'  => 'varchar','label' => 'LBL_CONTRACT_NUMBER','width' => '10%','name'  => 'contract_number','studio' => 'visible','default' => true,),

其二、对其进行赋值

重写模块的get_list_view_data方法:

function get_list_view_data() {global $app_list_strings,$db;//get_list_view_array与get_list_view_data相同$line_fields = $this->get_list_view_array();if(isset($_REQUEST['popuptype']) && $_REQUEST['popuptype'] == '<特定List>'){//获取当前$line_fields['<自定义字段(大写)>'] = <要附的值>;}}return $line_fields;}

后端控制

在后台PopupView中,通过设置请求参数中的metadata,sqlClause参数控制Popup视图的调用和控制条件

class <ModuleName>ViewPopup extends ViewPopup
{function Display() {if ($_REQUEST['<Params>']!= <Value>){$_REQUEST['metadata'] = '<Def文件名>';//可以附加其他参数}parent::Display();}
}

3. 自定义筛选条件字段

主要针对非本模块字段,对于本模块字段在searchdefs中添加即可

几点注意:
1. 对于非数据库字段,只要在verdefs中有定义,框架仍会当成本模块字段来拼接SQL语句,除非它为空,所以一般只在popupdef中定义字段
2. 关联字段创建必须有id属性,无论是在verdef还是popupdef中
3. 对于非本模块字段的查询条件需要手动处理,追加SQL条件,常用过的有EXISTS语句
4. 对于非本模块字段在查询结果界面不会保留上次查询条件,需要查询字段的回写,即在查询结果页面保留查询条件

1. 添加一般类型字段

第一步 在popupdef中添加字段定义,不需要添加到verdefs中

'contract_number' =>array('type'  => 'varchar','label' => 'LBL_CONTRACT_NUMBER','width' => '10%','name'  => 'contract_number',),

第二步 在PopupView中设置处理查询参数和字段回写
处理REQUEST参数,并在页面嵌入js代码实现查询条件回写

//字段名有advanced后缀
if(isset($_REQUEST['<字段名>']) && $_REQUEST['<字段名>'] != ''){//对字段参数进行预处理,保存到重命名字段中,并清空原字段$origin_value = $_REQUEST['<字段名>'];$_REQUEST['<重命名字段名>'] = $_REQUEST['<字段名>'];$_REQUEST['<字段名>'] = '';parent::Display();echo '<script>$("#<字段名>").val("'.origin_value .'");</script>';
}

第三步 追加查询条件
在popupdef中根据传入参数是否为空,拼接where条件并添加到whereStatement属性中

$condition = "";
if(isset($_REQUEST['<重命名字段名>']) && $_REQUEST['<重命名字段名>']!=""){$condition .= " EXISTS (<SQL语句>) ";
}
...
'whereStatement'=>....$condition,

2. 添加关联字段
对于查询字段是关联字段的需要在popupdef中定义关联字段和id字段,并且组合的查询条件相比于一般字段更加复杂

第一步 在popupdef中定义字段

'hit_racks_s' =>array ('name' => 'hit_racks_s','vname' => 'LBL_HIT_RACKS_S','type' => 'relate','default' => true,'id_name' => 'hit_racks_id_s','ext2'   => 'HIT_Racks','module' => 'HIT_Racks','rname' => 'name','quicksearch' => 'enabled','studio' => 'visible','width'  => '10%'),
'hit_racks_id_s' =>array ('name' => 'hit_racks_id_s','vname' => 'LBL_HIT_RACKS_ID_S','type' => 'id','len' => 36,'size' => '20',),

第二步和第三步与一般字段类似;

3. 添加布尔值字段

popupdef中定义:

'has_sub_location' =>array('type' => 'bool','label' => 'LBL_HAS_SUB_LOCATION','width' => '10%','default' => true,'name' => 'has_sub_location',   ),

bool类型的查询条件在界面上以下拉列表呈现,且以“0”、“1”多为值,未选择时为空,不会加入查询条件

3. 关于列表排序

1. 默认排序
排序字段:在popupdef中通过“orderBy”定义
排序方式:

//默认排序方式 asc$desc = $this->getSessionVariable($varName, $sortBy."S");if (empty($desc)){$desc = $defaultOrder;}$defaultOrder = $desc ? 'desc' : 'asc';$orderByValue = $defaultOrder;//ListView的setQuery方法可设置order by
if(!$allowOrderByOveride) {$this->query_orderby = $orderBy;return;}$this->getOrderBy($varName, $orderBy);...//通过请求参数修改排序方式
http://....lvso=DESC&HAT_Assets2_HAT_ASSETS_ORDER_BY=asset_group

注:
对于列表中有非本模块字段的,框架并不会进行排序,可以去掉排序功能,或在PopupView中进行处理


//一种参考
<script>$(".list.view thead tr th:eq(<所在列>)").children().eq(1).hide();
$(".list.view thead tr th:eq(<所在列>)").children().eq(0).children().eq(0).attr("href","#");
</script>

201703:SuiteCRM自定义筛选界面相关推荐

  1. FineReport中如何自定义登录界面

    在登录平台时,不希望使用FR默认的内置登录界面,想通过自定义登录界面实现登录操作,内置登录界面如下图: 登录界面,获取到用户名和密码的值,发送到报表系统,报表服务带着这两个参数访问认证地址进行认证. ...

  2. InstallShield自定义安装界面

    版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息. 前言: 对于一些InstallShield用户或企业,对于安装包界面除了采用默认的安装对话框外,有时可能会需要利用安装界 ...

  3. Android软件开发之盘点自定义View界面大合集(二)

    Android软件开发之盘点自定义View界面大合集(二) - 雨松MOMO的程序世界 - 51CTO技术博客 雨松MOMO带大家盘点Android 中的自定义View界面的绘制 今天我用自己写的一个 ...

  4. Wix 安装部署(二)自定义安装界面和行为

    Wix 安装部署(二)自定义安装界面和行为 原文:Wix 安装部署(二)自定义安装界面和行为 上一篇介绍了如何联合MSBuild来自动生成打包文件和对WIX的一些初步认识,http://www.cnb ...

  5. java多按钮筛选条件_Excel办公技巧:如何对表格数据进行自定义筛选?

    这篇文章和大家分享对表格数据进行自定义筛选的两种方法. 应用场景 下图表格中$A$2:$B$10单元格为筛选数据区域,我们想在其中筛选出姓"春"或者姓"夏"同时 ...

  6. 帆软finereport决策系统自定义登录界面

    通过前面对决策系统登录liu'chengliucheng 的梳理,发现通过改变AppearanceConfig的loginType与loginUrl即可实现跳转到自定义的登录界面. 第一步:先创建一个 ...

  7. 5.23 通过自定义筛选查找指定城市的指定工作人员 [原创Excel教程]

    原文:http://coolketang.com/staticOffice/5a97f32b756571454f26c19f.html 1. 本节课将为您演示,如何进行自定义的筛选操作,并获得筛选后的 ...

  8. AutoCAD C# 自动加载自定义RibbonUI界面

    目录 实现效果: 开发环境: 开发流程: 打开Visual Studio ,创建 .NET FrameWork 类库项目 填写项目名称 "RibbonUI",选择.NET 版本为 ...

  9. php 自定义字段erp,ERP自定义单据界面、自定义字段

    自定义功能模块 泛普软件ERP有几十个成熟的子系统,除了系统默认的组合外,客户可以根据信息化需求阶段,自己设定功能模组及菜单.自定义模块.自定义功能组的功能可以任意拆分组合子系统,通过根据企业实际情况 ...

  10. 筛选服务器连接暂时不可用,某个自定义筛选器或模块khy-016(如 URLScan)限制了对该文件的访问...

    摘要:服务器技术网nifengsoft 某个自定义筛选器或模块khy-016(如 URLScan)限制了对该文件的访问HTTP 错误 404.0 - Not Found 您要找的资源已被删除.已更名或 ...

最新文章

  1. C#进行Visio二次开发之电气线路停电分析逻辑
  2. 团队科学计算器-模块开发过程
  3. java调用xdotool_【转】java Map 遍历速度最优解
  4. 使用numpy出现DeprecationWarning: The normed argument is ignored when density is provided. 解决方法忽略警告的方法
  5. spark java 逻辑回归_逻辑回归分类技术分享,使用Java和Spark区分垃圾邮件
  6. repo-话说软件详细设计工具
  7. [css] 如何更改placeholder的字体颜色和大小?
  8. mysql存储引擎的一点学习心得总结
  9. CArray动态数组
  10. Codeforces Round #382 (Div. 2) D. Taxes 歌德巴赫猜想
  11. MySQL快速上手[学习笔记](二)
  12. 元素可视区client系列(附实例)
  13. Win7 环境下 IE8 升级到 IE11 后 F12 工具无法使用
  14. VB中MID如何使用
  15. AD18如何制作logo
  16. 网站建设与管理的基本概念
  17. Jedis和Lettuce
  18. Web二维矩阵matrix详解
  19. 暖风熏得游人醉,趁着假日小闲,也想做一回文人雅士
  20. 迅龙数据恢复软件真的很万能

热门文章

  1. [Software]基于Windriver的PCIe驱动开发
  2. 摄影测量学(第三版)_王佩军_考试复习资料
  3. 读《Android开发艺术探索》后的面试题整理
  4. IPv6 的速度比 IPv4 更快?
  5. java工作流_Java 实现简单工作流
  6. 用友u8怎么导出凭证_老师,用友U8里的凭证如何导出(导出有借贷方向的)?...
  7. java合并2个txt文本,Java实现多个文档合并输出到一个文档
  8. PS_01_基本操作
  9. vue综合实例——音乐播放器(悦听player)
  10. 计算机的常见故障处理实验报告,微机系统故障与处理-实验报告.doc