通用查询功能第三版EasyQueryVer3使用说明
3.1.1. easyQueryVer3(strSql, synchronization, useCache, strStart)2
3.1.2. decodeEasyQueryResult(strResult, notUseEasyQuery, notUseTurnPage,otherTurnPage)3
3.1.3. easyExecSql(strSql, synchronization, useCache, strStart,notUseEasyQuery, notUseTurnPage)3
3.1.4. turnPage.queryModal(strSql, multilineGrid)3
3.2.1. displayMultiline(arrDisplayData, multilineGrid, otherTurnPage)4
3.3.2. turnPage.getData(arrDataSet, arrDataIndex, pageRecordNum)5
3.3.4. turnPage.previousPage()5
3.4.1. getWherePart(fieldName, controlName, strOperate, fieldType)6
3.4.2. clearArrayElements(arrData)6
3.4.3. chooseArray(dataArray, filterArray)6
4.1. 虚拟数据源的MultiLine显示和翻页操作... 7
4.2. 在一个页面中显示一个MultiLine,并多次使用查询、拆分等功能... 7
1.演示模板:
l \ui\easyQueryVer3Example\EasyQueryVer3ExampleInput.jsp
l \ui\easyQueryVer3Example\EasyQueryVer3ExampleInit.jsp
l \ui\easyQueryVer3Example\EasyQueryVer3Example.js
运行:http://localhost:8900/ui/easyQueryVer3Example/EasyQueryVer3ExampleInput.jsp
注意:localhost是你的主机名
2.相关文件
请确认以下相关文件存在于对应的目录中:
\ui\common\easyQueryVer3\EasyQueryVer3.js
\ui\common\easyQueryVer3\EasyQueryCache.js
\ui\common\easyQueryVer3\EasyQueryKernel.jsp
\ui\common\easyQueryVer3\EasyQueryVer3Window.jsp
3.功能说明:
必须在使用如下功能的页面中包含(注意:不要直接从这里拷贝语句到代码中!):
<SCRIPTsrc="../common/javascript/Common.js" ></SCRIPT>
<SCRIPTsrc="../common/easyQueryVer3/EasyQueryVer3.js"></SCRIPT>
3.1. 查询功能
3.1.1. easyQueryVer3(strSql, synchronization, useCache, strStart)
l 功能说明:输入一个SQL语句,返回约定格式的查询结果字符串。
l 输入参数说明
1) strSql(String类型):SQL语句字符串。
2) synchronization(1为同步,0为异步):默认情况为1。同、异步查询方式设置。同步为查询出数据后才继续执行程序;异步为发出查询请求后继续执行程序,查询结果会在其他地方进行反馈。
3) useCache(1为缓存结果,0为不缓存):默认情况为0。设置查询结果缓存。需要进行页面缓存设置,即在需要保存结果的页面包含(注意,该页面刷新后缓存将被清空):
<SCRIPT src="../common/easyQueryVer3/EasyQueryCache.js"></SCRIPT>
4) strStart(int类型):默认情况为1。设置查询开始记录位置。
StrSql为必填参数,其他可以不填。
l 输出参数说明
1) 查询成功返回查询结果字符串:由记录和字段拼成,记录以‘^’分隔,字段以‘|’分隔,字段首是查询出的所有记录的数量。
2) 查询失败返回false
l 使用范例
strSql ="select SysVar, SysVarType, SysVarValue from ldsysvar where 1=1 ";
strQueryResult = easyQueryVer3(strSql, 1, 1, 1);
strQueryResult值为:“ 总记录数^ 记录1字段1 | 记录1字段2 | …… ^ 记录2字段1 | 记录2字段2 …… ”
3.1.2. decodeEasyQueryResult(strResult, notUseEasyQuery, notUseTurnPage,otherTurnPage)
l 功能说明:将约定格式的字符串拆分成二维数组。
l 输入参数说明
1) strResult:约定格式的字符串。主要与easyQueryVer3函数配套使用,输入查询返回的结果字符串。
2) notUseEasyQuery:非easyQueryVer3查询结果字符串标记。非约定格式字符串。
3) notUseTurnPage: 不使用翻页功能。“1”非,“0”是,默认非。
4) otherTurnPage: 使用其它的翻页对象,而不是默认的turnPage对象,必须是一个turnPageClass的对象。
l 输出参数说明
1) 拆分成功返回二维数组:行(一维)为记录,列(二维)为字段。
2) 拆分失败返回null
3.1.3. easyExecSql(strSql, synchronization, useCache, strStart,notUseEasyQuery, notUseTurnPage)
l 功能说明:将easyQueryVer3和decodeEasyQueryResult结合使用。输入一个SQL语句,返回一个查询结果的二维数组。
l 输入参数说明(同easyQueryVer3)
1) notUseEasyQuery:非easyQueryVer3查询结果字符串标记。非约定格式字符串。
2) notUseTurnPage: 不使用翻页功能。“1”非,“0”是,默认非。
l 输出参数说明(同decodeEasyQueryResult)
3.1.4. turnPage.queryModal(strSql, multilineGrid)
l 功能说明:快速查询显示接口,只能使用默认的turnPage翻页对象,一个页面只能使用一次。方法会根据传入的SQL语句查出数据,并显示在传入的MultiLine对象中,省去easyQueryVer3->decodeEasyQueryResult->turnPage.getData->displayMultiline等详细控制代码。
l 输入参数说明
1) strSql(String类型):SQL语句字符串。
2) multilineGrid:初始化过的Multiline对象。
l 输出参数说明(无)
3.2. 显示功能
3.2.1. displayMultiline(arrDisplayData,multilineGrid, otherTurnPage)
l 功能说明:调用Multiline功能模块显示二维数组。Multiline使用部分详见侯志敏编写的使用文档。
l 输入参数说明
1) arrDisplayData:一个二维数组。维数需要与Multiline初始化时的二维数组一致。
2) multilineGrid:初始化过的Multiline对象。
3) otherTurnPage: 使用其它的翻页对象,而不是默认的turnPage对象,必须是一个turnPageClass的对象。
l 输出参数说明(无)
3.3. 翻页功能
该功能必须配合Multiline和displayMultiline使用
3.3.1. turnPageClass()
l 功能说明:使用翻页功能首先要建立turnPageClass对象,必须建立为全局变量,名称不能改变,必须为var turnPage= new turnPageClass();(水平有限,找不到自动检测出对象类型的方法)所有的翻页方法均以该对象的方法调用,即页面中调用翻页方法需要写成:
<INPUTVALUE="首页" TYPE=button οnclick="turnPage.firstPage();">
<INPUT VALUE="上一页" TYPE=buttonοnclick="turnPage.previousPage();">
<INPUT VALUE="下一页" TYPE=buttonοnclick="turnPage.nextPage();">
<INPUT VALUE="尾页" TYPE=buttonοnclick="turnPage.lastPage();">
l 输入参数说明
1) turnPage.strQueryResult:easyQueryVer3的查询结果。
2) turnPage.arrDataCacheSet:decodeEasyQueryResult拆分后的二维数组。
3) turnPage.pageDisplayGrid:初始化过的Multiline对象。
4) turnPage.strQuerySql:查询的SQL语句。
5) turnPage.pageIndex:查询结果显示起始页。从0开始记数,第一页为0。默认0。
6) turnPage.useSimulation:使用模拟数据源,必须在拆分字符串前付值。为1表示使用,为0表示不使用。默认为0。
7) turnPage.queryAllRecordCount:查询结果的记录总数。在拆分函数中获取。
8) turnPage.blockPageNum:一个数据块的页面数。默认为common.js文件中定义的MAXMEMORYPAGES。
9) turnPage.pageLineNum:一个页面要显示的记录数。默认为common.js文件中定义的MAXSCREENLINES。
l 输出参数说明(无)
3.3.2. turnPage.getData(arrDataSet, arrDataIndex, pageRecordNum)
l 功能说明:在查询结果数组中取出符合页面显示大小设置的数组。是翻页控制的基础。(注意:Common.js中定义的MAXMEMORYPAGES * MAXSCREENLINES不能大于查询块的大小,查询块大小在SysConst.java中的同名变量进行设置)
l 输入参数说明
1) arrDataSet:要进行数据显示的二维数组。
2) arrDataIndex:当前要显示数据在数组中的索引
3) pageRecordNum:当前页面要显示的记录数
l 输出参数说明
1) 成功则返回符合页面显示容量的二维数组。
2) 失败返回null
3.3.3. turnPage.firstPage()
l 功能说明:从第一个查询结果块的第一条记录开始显示。
l 输入参数说明(无)
l 输出参数说明(无)
3.3.4. turnPage.previousPage()
l 功能说明:当查询结果超出一页的显示容量时,查找上一页数据并显示。
l 输入参数说明(无)
l 输出参数说明(无)
3.3.5. turnPage.nextPage()
l 功能说明:当查询结果超出一页的显示容量时,查找下一页数据并显示。
l 输入参数说明(无)
l 输出参数说明(无)
3.3.6. turnPage.lastPage()
l 功能说明:从最后一个查询结果块的最后一条记录开始显示。
l 输入参数说明(无)
l 输出参数说明(无)
3.3.7. 自动控制显示翻页按钮
l 功能说明:在JSP页面中自动控制显示翻页按钮。使用该设置后,如果查询结果数量大于页面设置的显示行数,就会显示翻页按钮,否则不显示。设置方法为:在翻页代码的外边加上如下DIV标签:
<Div id ="divPage" align=center style = "display: 'none' ">
<INPUT VALUE="首页" TYPE=button οnclick="turnPage.firstPage();">
<INPUT VALUE="上一页" TYPE=button οnclick="turnPage.previousPage();">
<INPUT VALUE="下一页" TYPE=button οnclick="turnPage.nextPage();">
<INPUT VALUE="尾页" TYPE=button οnclick="turnPage.lastPage();">
</Div>
l 输入参数说明(无)
l 输出参数说明(无)
3.4. 其他辅助功能函数
3.4.1. getWherePart(fieldName, controlName, strOperate, fieldType)
l 功能说明:获取页面指定控件的值,并按照指定类型拼成SQL语句的尾串。作者为HST。
l 输入参数说明
1) fieldName:SQL中要使用的字段名称。
2) controlName:控件名称。默认取与字段相同名称的控件。
3) strOperate:操作符。默认为“=”号操作。
4) fieldType( 0为字符型,1为数字型 ):字段类型。默认为0。
l 输出参数说明
1) 返回可直接拼至SQL语句WHERE以后的尾串。
l 使用范例
strSql = "select SysVar, SysVarType, SysVarValue from ldsysvarwhere 1=1 "
+getWherePart( 'SysVar' )
+getWherePart( 'SysVarType' )
+getWherePart( 'SysVarValue' );
3.4.2. clearArrayElements(arrData)
l 功能说明:清空数组函数。
l 输入参数说明
1) arrData:数组。
l 输出参数说明
1) 返回空数组。
3.4.3. chooseArray(dataArray, filterArray)
l 功能说明:过滤二维数组,获取需要的字段。
l 输入参数说明
1) dataArray:二维数组。
2) dataArray:包含过滤索引的一维数组,存放需要的字段的位置,从0开始记数。
l 输出参数说明
1) 返回二维数组。
l 使用范例
chooseArray({ {1,2},{3,4} }, {0} ) returns {{1},{3}}
4.复杂应用实例
在演示模板中均有以下情况的详细实现方法。
4.1. 虚拟数据源的MultiLine显示和翻页操作
虚拟数据源的意思是不通过easyQueryVer3(strSql)方法获取数据库的数据,而是通过其它手段(一般是自己写java后台或者直接写死在代码中)获得符合规则的字符串,并将该字符串中的数据显示在MultiLine中加以显示和操作。
使用的关键点:
1. 将数据字符串保存进turnPage的查询结果属性中:turnPage.strQueryResult =strData;
2. 设置使用虚拟数据源标记:turnPage.useSimulation =1;
3. 必须将所有数据设置为一个数据块:turnPage3.blockPageNum = turnPage3.queryAllRecordCount /turnPage3.pageLineNum;
4. 接着可进行拆分字符串到二维数组、过滤二维数组字段等操作,过滤功能只能用在这个地方。
4.2. 在一个页面中显示一个MultiLine,并多次使用查询、拆分等功能
早期版本不支持这个功能,属于设计上的缺陷,因为在拆分功能(decodeEasyQueryResult)中设置了公共属性,所以当一个查询被成功执行并显示在MultiLine中后,再次执行拆分操作会导致记数混乱,必须重新再执行前一个查询。
解决方案是扩充decodeEasyQueryResult方法的接口,增加了第三个参数notUseTurnPage,使与翻页无关的查询不会修改公共属性。
使用的关键点:
1. decodeEasyQueryResult(strResult,0, 1);第二个参数必须用0
2. easyExecSql(strSql, 1, 0, 1, 0,1);参数必须这样写
4.3. 在一个页面中显示多个MultiLine
早期版本也不支持这个功能,也属于设计上的缺陷,也是因为共用属性的问题造成的。
解决方案是扩充decodeEasyQueryResult方法和displayMultiline方法的接口,增加指定turnPage对象的参数。
使用的关键点:
1. 为每个MultiLine建立一个turnPage对象,给属性付值时注意不要弄错对象名
2. 在JSP页面中设置翻页按钮时注意Div标签的命名和翻页函数
<Div id= "divPage2" align=centerstyle= "display: 'none' ">
<INPUT CLASS=commonVALUE="首页" TYPE=button οnclick="turnPage2.firstPage();">
<INPUT CLASS=commonVALUE="上一页" TYPE=button οnclick="turnPage2.previousPage();">
<INPUT CLASS=commonVALUE="下一页" TYPE=button οnclick="turnPage2.nextPage();">
<INPUT CLASS=commonVALUE="尾页" TYPE=button οnclick="turnPage2.lastPage();">
</Div>