功能描述:1)自定义从那几张表中查询数据 2)可自定义组合条件 3)自定义组合表头 4)可定制查询模板 5)可以选择查询模板回显上去 6)可将符合条件的所有数据导出成excel,根据类型创建不同的cell 效果图
环境准备:
可查询表和字段配置:search-conditions.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 配置可查询的字段,和该字段显示的文本值,还有该字段查询的类型 -->
<conditions>
<!-- 定义查询的表和该表在页面上显示的值 -->
<table name="xmb" value="项目表">
<!-- 定制可查询到的字段,每个字段都带上该表的简写,并定义字段的类型
* type对应的是设定条件中的关系,
type="string" :表示该查询的关系有:1)等于,2)包含
对应的查询条件值是文本框需要自己填写
type="num" :表示该查询的关系有:1)大于,2)小于,3)等于,4)大于等于,5)小于等于
查询的是数值类型,对应的查询条件值是文本框,需自己填写值
type="select" :表示该查询的关系有:1)等于
对应的查询条件值是下拉选select,配置在该字段里的<searchValue>选项
type="date" :表示该查询的是日期,对应的关系中的值是日期段
对应的查询条件值是带日期控件的文本框,只能选择时间,
日期对应的是开始和结束日期,不填写,开始日期默认是'1900-01-01',结束日期是当前的系统时间
备用type="int" :表示查询的是整数类型,用于导出的时候区分整数类型和浮点类型,
(不区分的话,在excel中没有办法计算)
-->
<column name="x.xmmc" showText="项目名称" type="string" />
<column name="x.xmfzrxm" showText="项目负责人姓名" type="string"/>
<column name="x.xmssdq" showText="项目所属地区" type="select">
<!-- name保存在数据库中的值,value显示给客户看的值 -->
<searchValue name="11" value="海淀区"/>
<searchValue name="12" value="朝阳区"/>
<searchValue name="13" value="东城区"/>
<searchValue name="14" value="西城区"/>
</column>
<column name="x.ksrq" showText="开始日期" type="date"/>
<column name="x.xmmj" showText="项目面积" type="num"/>
<column name="x.xmrs" showText="参与人数" type="int"/>
</table>
<table name="qyb" value="企业表">
<column name="q.qymc" showText="企业名称" type="string"/>
<!-- 省略.... -->
</table>
<table name="ryb" value="人员表">
<column name="r.rymc" showText="人员名称"/>
<column name="r.rylx" showText="人员类型" type="select">
<searchValue name="" value=""/>
</column>
</table>
</conditions>
查询模板定制,在指定目录下,登录用户名.xml
<?xml version="1.0" encoding="UTF-8"?>
<searchCondition>
<!-- 查询模板定制
* searchTemplate 代表一个模板
* id 当前模板编号,添加的时候,取最大值+1
* name 模板名称
* fromTable 从哪几张表从查询数据
* tableHead 设置的表头
* tr 代表设置条件的行
* ljys 逻辑运算,只有and和or,默认为and
* zkh 左括号
* tableName 当前字段所在的表
* columnName 当期设置条件的字段
* gx 查询的关系
* ykh 右括号
-->
<searchTemplate id="1" name="未命名1" fromTable="xmb,qyb" tableHead="{'x.xmmc':'项目名称','x.xmfzrxm':'项目负责人姓名','x.xmssdq':'项目所属地区','q.qymc':'企业名称'}">
<tr ljys="" zkh="" tableName="xmb" columnName="x.xmmc" gx="like" cxtjz="北京" ykh=""/>
<tr ljys="and" zkh="" tableName="qyb" columnName="q.qylx" gx="like" cxtjz="公司" ykh=""/>
<tr ljys="and" zkh="(" tableName="xmb" columnName="x.xmssdq" gx="=" cxtjz="11" ykh=""/>
<tr ljys="or" zkh="" tableName="xmb" columnName="x.xmssdq" gx="=" cxtjz="12" ykh=")"/>
</searchTemplate>
</searchCondition>
查询页面定制dzSearch.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page isELIgnored="false"%>
<%
String webPath = request.getContextPath();
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>综合查询</title>
</head>
<body>
<div >
<!-- 由于我这边是固定的从三张表中读取数据,我就偷了个懒,直接静态了,如果表不固定,可以动态的加载 -->
<div class="table-top"><span style="float: left;vertical-align: middle">设定条件</span><input type="button" name="addTrBtn" id="addTrBtn" class="button" style="float:right;width:70px;height:22px" value="添加条件" onclick="addTr()"/></div>
<table id="conditionTable" class="tableRegion" style="table-layout:fixed;" width="100%" >
<thead class="tableHeader ">
<tr>
<td width="5%">逻辑运算</td>
<td width="5%">左括号</td>
<td width="10%">表名</td>
<td width="30%">字段</td>
<td width="10%">关系</td>
<td width="15%">查询条件值</td>
<td width="5%">右括号</td>
<td width="5%">操作</td>
</tr>
</thead>
<tbody>
<tr >
<td ></td>
<td ><input type="text" onchange="kh(this.value)" class="khcss"/></td>
<td ><select onchange='tableChange(this,1)' ><option selected='selected'>请选择</option><option value='FWAQ_DWY_HTINFO'>项目表</option><option value='FWAQ_DWY_WYINFO'>企业表</option><option value='FWAQ_DWY_WYUSERINFO'>人员表</option></select></td>
<td><select onchange='columnChange(this)' style="width:340px"></select></td>
<td ></td>
<td ></td>
<td ><input type="text" onchange="kh(this.value)" class="khcss"/></td>
<td ></td>
</tr>
</tbody>
</table>
</div>
<!-- 自定义条件结束 -->
<!-- 自定义表头开始 -->
<div class="table-top" style="clear: both"><span style="float: left;vertical-align: middle">表头设定</span></div>
<table>
<tr>
<td>
<select id="tableHeader" multiple="multiple" size="10" onchange="tableChange(this,2)" style="width: 100px">
</select>
</td>
<td>
<select id="columnHeader" multiple="multiple" size="10" style="width: 330px" >
</select>
</td>
<td><input id="rightMoveBtn" type="button" value=">>" class="button" style="width:60px;height:20px" /><br/><br/>
<input id="leftMoveBtn" type="button" value="<<" class="button" style="width:60px;height:20px" />
</td>
<td>
<select id="resultHeader" multiple="multiple" size="10" style="width: 330px"></select>
</td>
</tr>
</table>
<!-- 自定义表头结束 -->
<br/>
<input id="searchBtn" type="button" value="查 询" class="button" onclick="searchFn()" style="width:60px;height:20px" />
<input id="saveSearchCondition2Xml" type="button" value="保存成模板" class="button" style="width:80px;height: 20px">
<input id="openMbPage" value="选择模板" type="button" class="button" vlaue="选择模板" onclick="openMbWin()" style="width:70px;height:20px" /><span id="showMbText"></span>
</body>
</html>