201703:SuiteCRM自定义筛选界面
SuiteCRM自定义筛选界面 (Popup)
- 筛选界面显示自定义
- 自定义筛选条件字段
- 关于列表排序
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自定义筛选界面相关推荐
- FineReport中如何自定义登录界面
在登录平台时,不希望使用FR默认的内置登录界面,想通过自定义登录界面实现登录操作,内置登录界面如下图: 登录界面,获取到用户名和密码的值,发送到报表系统,报表服务带着这两个参数访问认证地址进行认证. ...
- InstallShield自定义安装界面
版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息. 前言: 对于一些InstallShield用户或企业,对于安装包界面除了采用默认的安装对话框外,有时可能会需要利用安装界 ...
- Android软件开发之盘点自定义View界面大合集(二)
Android软件开发之盘点自定义View界面大合集(二) - 雨松MOMO的程序世界 - 51CTO技术博客 雨松MOMO带大家盘点Android 中的自定义View界面的绘制 今天我用自己写的一个 ...
- Wix 安装部署(二)自定义安装界面和行为
Wix 安装部署(二)自定义安装界面和行为 原文:Wix 安装部署(二)自定义安装界面和行为 上一篇介绍了如何联合MSBuild来自动生成打包文件和对WIX的一些初步认识,http://www.cnb ...
- java多按钮筛选条件_Excel办公技巧:如何对表格数据进行自定义筛选?
这篇文章和大家分享对表格数据进行自定义筛选的两种方法. 应用场景 下图表格中$A$2:$B$10单元格为筛选数据区域,我们想在其中筛选出姓"春"或者姓"夏"同时 ...
- 帆软finereport决策系统自定义登录界面
通过前面对决策系统登录liu'chengliucheng 的梳理,发现通过改变AppearanceConfig的loginType与loginUrl即可实现跳转到自定义的登录界面. 第一步:先创建一个 ...
- 5.23 通过自定义筛选查找指定城市的指定工作人员 [原创Excel教程]
原文:http://coolketang.com/staticOffice/5a97f32b756571454f26c19f.html 1. 本节课将为您演示,如何进行自定义的筛选操作,并获得筛选后的 ...
- AutoCAD C# 自动加载自定义RibbonUI界面
目录 实现效果: 开发环境: 开发流程: 打开Visual Studio ,创建 .NET FrameWork 类库项目 填写项目名称 "RibbonUI",选择.NET 版本为 ...
- php 自定义字段erp,ERP自定义单据界面、自定义字段
自定义功能模块 泛普软件ERP有几十个成熟的子系统,除了系统默认的组合外,客户可以根据信息化需求阶段,自己设定功能模组及菜单.自定义模块.自定义功能组的功能可以任意拆分组合子系统,通过根据企业实际情况 ...
- 筛选服务器连接暂时不可用,某个自定义筛选器或模块khy-016(如 URLScan)限制了对该文件的访问...
摘要:服务器技术网nifengsoft 某个自定义筛选器或模块khy-016(如 URLScan)限制了对该文件的访问HTTP 错误 404.0 - Not Found 您要找的资源已被删除.已更名或 ...
最新文章
- C#进行Visio二次开发之电气线路停电分析逻辑
- 团队科学计算器-模块开发过程
- java调用xdotool_【转】java Map 遍历速度最优解
- 使用numpy出现DeprecationWarning: The normed argument is ignored when density is provided. 解决方法忽略警告的方法
- spark java 逻辑回归_逻辑回归分类技术分享,使用Java和Spark区分垃圾邮件
- repo-话说软件详细设计工具
- [css] 如何更改placeholder的字体颜色和大小?
- mysql存储引擎的一点学习心得总结
- CArray动态数组
- Codeforces Round #382 (Div. 2) D. Taxes 歌德巴赫猜想
- MySQL快速上手[学习笔记](二)
- 元素可视区client系列(附实例)
- Win7 环境下 IE8 升级到 IE11 后 F12 工具无法使用
- VB中MID如何使用
- AD18如何制作logo
- 网站建设与管理的基本概念
- Jedis和Lettuce
- Web二维矩阵matrix详解
- 暖风熏得游人醉,趁着假日小闲,也想做一回文人雅士
- 迅龙数据恢复软件真的很万能
热门文章
- [Software]基于Windriver的PCIe驱动开发
- 摄影测量学(第三版)_王佩军_考试复习资料
- 读《Android开发艺术探索》后的面试题整理
- IPv6 的速度比 IPv4 更快?
- java工作流_Java 实现简单工作流
- 用友u8怎么导出凭证_老师,用友U8里的凭证如何导出(导出有借贷方向的)?...
- java合并2个txt文本,Java实现多个文档合并输出到一个文档
- PS_01_基本操作
- vue综合实例——音乐播放器(悦听player)
- 计算机的常见故障处理实验报告,微机系统故障与处理-实验报告.doc