当前位置: 首页>編程日記>正文

201703:SuiteCRM自定义筛选界面

201703:SuiteCRM自定义筛选界面

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>


https://www.fengoutiyan.com/post/15582.html

相关文章:

  • 文本筛选怎么设置
  • 安卓筛选控件
  • radio单选框
  • excel如何自定义筛选
  • 自定义筛选
  • 如何筛选
  • vs2017
  • 如何设置自定义自动筛选方式
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機