`
txf2004
  • 浏览: 7134134 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

OpenJweb平台中自定义组合查询条件窗口的实现方式(经典之作)

阅读更多

首先,在父页面中写一个javascript脚本,用来接收组合条件设置窗口的拼装的SQL语句,查询条件子窗口关闭后,javascript将查询条件提交到后台控制层,父页面的javascript:

function doCustQuery()
{
//
var returnvalue =window.showModalDialog( "<%=request.getContextPath()%>/module/platform/compositeQuery.jsp?entityName=${entityClassName}", '组合条件查询', "dialogWidth =800px;dialogHeight = 400px;help=0 ");
// alert(returnvalue+"!!!")
document.listForm.customHql.value=returnvalue;

document.listForm.submit();

}

下面是动态查询条件设置窗口的界面:

说明:最右侧选择并且或或者可以增加新行,查询条件列是当前表的查询条件列,当选择了审批状态,由于审批状态

是数据字典,则计划发布对应的那个iframe自动显示审批状态的取值,对于信息标题,由于没有数据字典,则iframe显示的是输入框,另外每行有一对单引号,表明iframe的值是一个字符串,如果条件列为数字,则去掉一对引号,算术比较符下拉框包含了=,<> ,in ,not in ,is null,is not null,like,>,<等逻辑关系,相信大家看到这个动态查询条件页面后肯定会对大家有莫大的帮助,也许这正是你在网上苦苦寻找的答案,此页面的JSP代码如下:

<%@ page contentType="text/html; charset=GBK"%>
<%@ taglib prefix="ww" uri="webwork" %>
<%@ include file="/common/head.jsp"%>
<%
String entityName =request.getParameter("entityName");

%>
<script language="JavaScript">

<!--
function changeList( len) {
var colname = document.queryForm.elements['conditionCol1'+len].value
var classname = "<%=entityName%>"
var htmlFieldName = "queryValueCol1"
var obj = document.getElementById("selectList"+len);
var url = "<%=request.getContextPath()%>/module/platform/dictlist.jsp?

classname="+classname+"&colname="+colname+"&htmlFieldName="+htmlFieldName
window.frames['selectList'+len].document.location.href= url


}

function addQueryTable()
{
var row1 = queryTable.insertRow(); //插入一行

var cell1=row1.insertCell();
var cell2=row1.insertCell();
var cell3=row1.insertCell();
var cell4=row1.insertCell();
var cell5=row1.insertCell();
var cell6=row1.insertCell();
var cell7=row1.insertCell();
var len = window.queryTable.rows.length
var logicConn ="<select name=col7"+len+" onChange='addQueryTable()' ><option value='' selected=selected>"+
"连接符...</option><option value=' AND '>并且</option><option value=' OR '>或者</option></select>"
var logicComp = "<select name=col6"+len+" ><option value=' = ' selected=selected>等于</option>"+
"<option value=' > '>大于</option><option value=' < '>小于</option><option value=' = '>"+
"等于</option><option value=' <> '>不等于</option><option value=' like '>匹配</option>"+
"<option value=' is null '>为空</option><option value=' is not null '>非空</option><option "+
"value=' in '>包含</option><option value=' not in '>不包含</option></select>"
cell1.innerHTML = "<td align='left' width='8%'><input type='text' name='col1"+len+"' size=11 value='('></td>"; //左括号
var tmpSelect='<%=JspBuffer.getQueryHtmlSelect(entityName,"conditionCol1")%>'
tmpSelect=tmpSelect.replace("conditionCol1","conditionCol1"+len)
tmpSelect=tmpSelect.replace("changeList()","changeList("+len+")")

cell2.innerHTML = "<td align='left' width='20%'>" + tmpSelect +"</td>" ;
cell3.innerHTML = "<td align='left' width='10%'>"+logicComp+"</td>"; //逻辑运算符
cell4.innerHTML = "<td align='right' width='12%'><input type='text' name='col4"+len+"' size=12 value=\""+"'"+"\"

></td>"; //括号
cell5.innerHTML = "<td class='add_content_' width='40%'><div style='HEIGHT: 30px;overflow=auto;' >"+
"<iframe id='selectList"+len+"' src='<%=request.getContextPath()%>/module/platform/dictlist.jsp?className="+

"<%=entityName%>&colname=&htmlFieldName=queryValueCol1' name='selectList"+len+"'"+
" frameborder='0' width='100%' height='100%' scrolling='no' MARGINHEIGHT=5></iframe></div></td>" //查询条件值

cell6.innerHTML = "<td align='left' width='8%'> <input type='text' name='col1"+len+"' size=8 value=\""+"')"+"\"></td>";

// 括号
cell7.innerHTML = "<td align='left' width='8%'>"+logicConn+"</td>"; //逻辑连接符ect>"


}

//获得设置的查询条件
function getCondition( )
{
//alert(window.tb1.rows.length);表格的长度
// alert(document.test.a1. value)
// alert(document.test.conditionCol1 . value)
//获得标签的名字 循环a[i].value 肯定能行
// alert( document.test.getElementsByTagName('input')[1].value)
// alert( document.test.getElementsByTagName('select')[0].value)
var len = window.queryTable.rows.length
//alert(window.queryTable.getElementsByName('col1').value)
//alert(window.queryTable.getElementsByTagName('input')[0].value)
var queryString ="";
for(i=0;i<len;i++)
{

var col1 = window.queryTable.getElementsByTagName('input')[i*3+0].value //左括号
if(col1==null||col1=='null')col1=""

var col2 = window.queryTable.getElementsByTagName('select')[i*3+0].value //获得查询字段名
if(col2==null||col2=='null')col2=""

var col3 = window.queryTable.getElementsByTagName('select')[i*3+1].value //获得逻辑比较符
if(col3==null||col3=='null')col3=""
var col4 = window.queryTable.getElementsByTagName('input')[i*3+1].value //括号
if(col14=null||col4=='null')col4=""
var col5 = window.frames['selectList'+(i+1)].document.dict.queryValueCol1.value //获得iframe中的值
if(col5==null||col5=='null')col5=""

//col5="\'"+col5+"\'"
// alert(col5)
var col6 = window.queryTable.getElementsByTagName('input')[i*3+2].value //括号
if(col6==null||col6=='null')col6=""
var col7 = window.queryTable.getElementsByTagName('select')[i*3+2].value //获得逻辑连接符
if(col3==' like ')col5='%'+col5+'%' //如果是模糊查询,自动增加%
if(col3==' is null '||col3==' is not null ')col5=""; //如果设置了is null和is not null表达式,则后面不需要条件值
if(col3==' is null '||col3==' is not null ')col4="";
if(col3==' is null '||col3==' is not null ')col6=")";
if(col7==null||col7=='null')col7=""
//alert(col5)
if(col2==null||col2==""||col2=='null')
{
//如果col2为空,不再计算条件表达式

break;
}

queryString += col1+col2+col3+col4+col5+col6+col7

}
// alert(queryString)
window.returnValue =queryString;
window.close();

}
-->
</script>


<table width="96%" align="center" class="all">
<tr class="allcontent">
<td class="allcontent">

<ww:form name="queryForm" action = "listPlan">
<fieldset>
<ww:hidden name="operate"/>
<ww:hidden name="serviceMethod" />
<ww:hidden name="queryValueCol1" />

<ww:hidden name="userActionId"/>
<ww:hidden name="actionFlag"/>
<legend></legend>
<table width="100%" border="0" align="center" cellpadding="2" cellspacing="0" class="query">
<tr class="query_content_">

<td colspan="4" class="query_content_" align="right">
<!--<input type="button" value="新增" onClick="addQueryTable()" class="mybutton">-->

<input type="button" value="执行查询" onClick="getCondition()" class="mybutton">
</tr>
</table>
</fieldset>
<fieldset>
<legend>查询条件设置</legend>
<table width="100%" class="result" border="1" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
<tr id="docktr" align="center" class="result_title">
<td nowrap class="result_head_dock" width="10%">括号</td>
<td nowrap class="result_head_dock" width="20%" >查询条件列</td>
<td nowrap class="result_head_dock" width="10%">逻辑运算符</td>
<td nowrap class="result_head_dock" width="10%">括号</td>
<td nowrap class="result_head_dock" width="30%">查询条件值</td>
<td nowrap class="result_head_dock" width="10%">括号</td>
<td nowrap class="result_head_dock" width="10%">逻辑连接符</td>
</tr>
</table>
<div id="FixHeadContainer" style="HEIGHT: 295px;overflow=auto;">
<table width="100%"><tr><td>
<table width="100%" class="result" id="queryTable" border="1" align="center"

cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">


</table>
<script Language="Javascript1.2">
for (i=0;i<queryTable.rows.length;i++) {
(i%2==0)?(table1.rows(i).className = "result_content"):(table1.rows(i).className = "result_content_");
}
document.title="组合查询条件设置";
addQueryTable() ;

</script>
</td></tr>

</table>
</div>
<table width="100%" class="resbutton">
<tr class="resbutton">
</tr>
</table>
</fieldset>
</ww:form>
</td>
</tr>
</table>
<%@include file="/common/tail.jsp"%>


分享到:
评论

相关推荐

    openjweb

    "02-OpenJWeb平台快速开发快速开发指南(非工作流相关).doc" 可能是一份详尽的开发指南,为开发者提供了在`openjweb`平台上进行非工作流相关的开发指导,可能包括数据库连接、API调用、页面布局、自定义组件开发等...

    OpenJWeb简易审批流

    6. **权限控制**:在OpenJWeb中,权限控制是至关重要的。你可以为不同角色分配不同的操作权限,确保审批流程的安全性和合规性。 7. **日志与跟踪**:系统会记录审批过程中的每一个动作,便于审计和追踪。开发者可以...

    openjweb快速开发平台-在线考试与在线调查系统

    "OpenJWeb"快速开发平台是一款专为开发者和企业设计的高效、易用的软件开发工具,主要用于构建在线考试和在线调查系统。该平台的核心优势在于其强大的功能集和便捷的开发体验,允许用户快速搭建并定制化这些系统,极...

    OpenJWeb(1.6) Java Web应用快速开发平台技术白皮书

    《OpenJWeb(1.6) Java Web应用快速开发平台技术白皮书》是一份详细介绍OpenJWeb 1.6版本的文档集合,主要面向Java开发者,提供了关于该平台的全面指南。OpenJWeb是一个开源的Java Web应用开发框架,旨在简化Web应用...

    OpenJWeb快速开发平台简易工作流的实现-信息发布流程(一)

    在OpenJWeb中,工作流模块允许开发者自定义流程,满足不同业务场景的需求。 1. **工作流设计** - 工作流设计通常从需求分析开始,明确信息发布流程涉及的角色(如发布人、审核人)、步骤(提交、审核、发布)以及...

    OpenJWeb1.9Release开源版20110601

    **OpenJWeb**是一款面向Java Web应用开发的框架,其目标是提供一个易于使用且高度可扩展的平台,用于构建企业级应用。OpenJWeb 1.9 Release版本作为2011年6月1日发布的开源版本,旨在为广大开发者提供更加稳定、高效...

    OpenJWeb工作流设计文档

    在OpenJWeb中,审批工作流是核心应用之一。系统提供了丰富的审批规则定义,包括单人审批、多人会签、有条件分支等。通过预设或自定义审批策略,企业可以根据实际需求灵活配置审批流程。此外,工作流还与角色权限紧密...

    OpenJweb增删改查页面生成器之建表1

    【OpenJweb增删改查页面生成器之建表1】是关于OpenJweb平台的一个教程,主要聚焦在快速开发环境中如何构建数据表并自动生成相应的增删改查(CRUD)页面。OpenJweb是一个高效、易用的Java Web开发框架,它旨在简化Web...

    OpenJWeb快速开发平台快速生成增删改查功能指南

    此文件介绍如何利用OpenJweb快速开发平台快速生成增删改查功能页面,已实现由用户定义及创建数据库表,在平台中生成hibernate映射文件和POJO类,生成的增删改查页面包括跨数据库的分页,排序,条件查询,及下拉型字段根据...

    OpenJWeb(v1.9) 企业级信息化应用平台开源版发布公告(基于Java语言开发)

    OpenJWeb(v1.9) 是一个基于Java语言开发的企业级信息化应用平台的开源版本,它的发布对于开发者和企业来说,提供了一个免费且强大的工具来构建和管理他们的信息系统。这个平台可能包含了各种功能模块,如内容管理...

    OpenJWeb工作流

    在OpenJWeb平台中,本案例聚焦于实现一个简单但实用的审批流程管理功能,以满足企业内部的事务性计划审批需求。该功能主要面向电力行业的应用场景,具体而言是针对一家发电厂的事务性计划审批流程进行设计和开发。 ...

    OpenJWeb1.6 Java Web 应用快速开发平台技术白皮书

    本文介绍最新的开源产品Openjweb java快速应用开发平台,基于struts2+hibernate+spring+spring security,实现了单表,主明细表增删改查,完整的组织结构树和权限管理体系,支持多语设置和自动生成多语言文件,支持可配置...

    OpenJWeb3.6业务开发平台支持分布式架构-附件资源

    OpenJWeb3.6业务开发平台支持分布式架构-附件资源

    OpenJWeb数据库表结构

    OpenJWeb数据库表机构含RBAC完整的角色权限、系统管理、B2C电商数据库结构、CMS内容管理系统数据库结构,是实际项目的数据库。

    OpenJWeb_v1_6_增删改查页面代码生成器.PDF

    OpenJWeb V1.6采用的主框架为Struts2+Spring+Hibernate+Spring Security,后台管理页面可使用平台的代码生成器来生成。在平台中定义好一个数据库表结构后,可生成对应的数据库表,Java实体类代码,Hibernate配置文件...

    oracle 技术

    根据提供的部分内容,虽然没有明确提到Oracle技术的具体应用,但是可以推测在企业级信息化应用平台——OpenJWeb中可能涉及到了Oracle数据库的使用,因为这类平台通常需要强大的后端数据库支持。 ##### 1. 产品说明 ...

Global site tag (gtag.js) - Google Analytics