1 查询设置
.1 自定义查询
如果对系统自动生成的查询布局不满意,可以自己定义查询的布局:
以demo中产品(自定义查询)为例说明:
1. 先在【系统元数据管理】à【列表管理】修改选中列表,在基本信息中设置“是否启用查询”为自定义查询,保存;
2. 列表所在页面中添加查询区域,如下:
<divid="customSearchZoon" style="display: none;padding:6px10px;">
<table id="parameter_Table"class="fix-searchtable" style="width:100%;">
<tr>
<tdclass="content-title" align="right">产品编号</td>
<td>
<input class="searchInputClass"name="productNumber"/>
</td>
<tdclass="content-title" align="right">产品名称</td>
<td>
<input class="searchInputClass"name="productName"/>
</td>
<tdclass="content-title" align="right">产品数量</td>
<td>
<input class="searchInputClass"name="amount"/>
</td>
</tr>
</table>
</div>
Input框中name值域实体字段对应,里边样式是默认样式,可以手动写样式添加,每一行可以自由设置显示字段个数,div和table的id固定,不能自定义改变。
1.2 查询事件
列表中普通查询和高级查询可添加事件,在【系统元数据管理】——【列表管理】,选择相应列表,修改基本信息,查询设置中可添加事件:单击事件、下拉框切换、失去焦点事件,如图:
设置完后,需在列表所在页面添加脚本,方法名命名规则为“字段名”+QueryClick、“字段名”+QueryChange、“字段名”+QueryBlur,假设字段名为attrName,则事件为如下:
function attrNameQueryClick(id){}
function attrNameQueryBlur(id){}
function attrNameChange(id){}
1.3 列表的多表查询
普通列表中取得数据一般是根据HQL查询,如果列表数据需要从多张数据表中取,HQL满足不了,则需要使用SQL的方式取数据,使用SQL不能绑定实体,一般是一对一或者多对一的形式,需要手动在后台拼sql,以demo中“订单组合列表”为例,方法如下:
1. 在【系统元数据管理】à【数据表管理】中新建表ES_ITEM_COMBINE_ORDER如图4-1:
说明:图4-2基本信息中,“数据库表名称”自己定义,不对应数据库中实际表名,“实体类名”也是自己定义。
图4-3中orderItem是订单字表的别名,自己定义,o是订单主表别名,orderItem.product_name 是子表中字段,product_name对应数据库中表的实际字段名称。
图4-1
图4-2
图4-3
1. 列表中标签如下
<grid:jqGridgridId="orderItemList"url="${ctx}/order-item/order-combine-data.htm"code="ES_ITEM_COMBINE_ORDER"pageName="combinePage"></grid:jqGrid>
2. 后台action
@Action("order-combine-data")
publicString combineData(){
combinePage= orderItemManager.getCombinePage(combinePage);
renderText(PageUtils.pageToJson(combinePage).replace("orderItem.id","id"));
return null;
}
注意:combinePage定义成object:private Page<Object> combinePage;
需要在转json时添加.replace("orderItem.id", "id")),如果不替换jQuery('#orderItemList').getGridParam('selarrrow')取得的是行序号,而不是对应记录的id。
3. dao中:
public Page<Object>getCombinePage(Page<Object> combinePage) {
StringpartSql =ApiFactory.getMmsService().getColumnsByCode("ES_ITEM_COMBINE_ORDER");
StringBuildersql = new StringBuilder("select ");
sql.append(partSql);
sql.append("from ES_ORDER_ITEM orderItem ");
sql.append("leftjoin ES_ORDER o on orderItem.FK_ORDER_ID = o.id ");
sql.append("whereorderItem.company_id=? ");
returnthis.searchPageBySql(combinePage, sql.toString(),ContextUtils.getCompanyId());
}
说明:ES_ITEM_COMBINE_ORDER对应的是列表管理的编码,orderItem和o是上述(1)中自己定义的别名!
如果列表没出来,调试一下看后台是否报错,如果报错将sql语句在数据库中执行查看是否有误!
4. 列表如下:
1.4 子表查询
列表页面为主子表形式时,若想要根据子表的字段进行查询,请按照以下步骤进行数据的设置:
第一步:在【系统元数据管理】——【数据表管理】中选择列表页面主表的数据表进行修改。
第二步:在【字段信息】中添加子表的字段信息,并且保存。如图:
第三步:在【列表管理】——【字段信息】中用户可根据自己的需求修改该字段子列表页面的显示形式。如图:
关于iMatrix平台标签更详细的资料可以到官网上下载:http://www.imatrix.net.cn
如有使用iMatrix平台问题请登录iMatrix平台论坛咨询:
http://bbs.imatrix.net.cn/forum.php?mod=forumdisplay&fid=37
或者加入QQ群307599527