1.新增“多选”操作对标 sql 的 in条件。这个需要后台配合才能实现多选功能。原理:多选操作对应in操作符,对应值用逗号分割,然后后台拼接sql。如:
else if(QueryConditionOption.in == qcop){
if(val != null){
String [] vals = val.split(",");
if(vals.length > 0){
for (String string : vals) {
list.add(string);
}
sqlWhere += field +" in ("+getInParams(vals.length)+") ";
}
}
}
/****
* 根据参数个数构造 字符串。如 2个参数 返回 ?,?
* @param num num必须大于0 如: 3
* @return ?,?,?
*/
public String getInParams(int num){
StringBuffer sb = new StringBuffer("");
for(int i=0;i<num;i++){
if(i!=0){
sb.append(",");
}
sb.append("?");
}
return sb.toString();
}
2.新增复选框编辑器。复选框编辑器的templet既可以使用类似select编辑器的模板,也可以使用类似radio编辑器的模板templet="是:N|否:Y" 模式。
ps:多选对应的编辑器不一定非的是复选框编辑器,也可以是文本编辑器,如果是文本编辑器则需要用户主动输入逗号分割。比如“用户姓名”条件选择了多选,值中输入“张三,李四”一样可以实现多选。还可以自定义下拉样式的多选编辑器。
查看demo【政治面貌】
升级setCondition功能。新增了getCondition方法和setHideCondition方法。并且setCondition支持传入json字符串作为参数。
可以参考嵌套查询页面。点击查看demo
使用方法:
1.按之前的方法设置好查询条件点击查询。
2.调用dc.getCondition()方法。
3.将上面的结果放入html模板中。
<script id="initCondtion" type="text/html">
[{"logicalOperator":"and","groupname":"groupname2","subgroupname":"groupname41278259680340446","rowlevel":"0","conditionFieldVal":"DynamicCondition.province","conditionOptionVal":"equal","datatype":"string","conditionValueVal":{"value":"","text":""},"conditionValueLeftVal":{"value":"","text":""},"conditionValueRightVal":{"value":"","text":""}},{"logicalOperator":"and","groupname":"groupname2","subgroupname":"groupname4562658783588114","rowlevel":"0","conditionFieldVal":"DynamicCondition.city","conditionOptionVal":"equal","conditionValueVal":{"value":"","text":""},"conditionValueLeftVal":{"value":"","text":""},"conditionValueRightVal":{"value":"","text":""}},{"logicalOperator":"and","groupname":"groupname2","subgroupname":"groupname7145102822903624","rowlevel":"0","conditionFieldVal":"DynamicCondition.name","conditionOptionVal":"like","datatype":"string","conditionValueVal":{"value":"张三","text":"张三"},"conditionValueLeftVal":{"value":"","text":""},"conditionValueRightVal":{"value":"","text":""}}]
</script>
<script id="hideCondtion" type="text/html">
[{"logicalOperator":"and","groupname":"groupname2","subgroupname":"groupname9181101668913314","rowlevel":"0","conditionFieldVal":"DynamicCondition.province","conditionOptionVal":"equal","datatype":"string","conditionValueVal":{"value":"","text":""},"conditionValueLeftVal":{"value":"","text":""},"conditionValueRightVal":{"value":"","text":""}},{"logicalOperator":"and","groupname":"groupname2","subgroupname":"groupname03241505926701782","rowlevel":"0","conditionFieldVal":"DynamicCondition.city","conditionOptionVal":"equal","conditionValueVal":{"value":"","text":""},"conditionValueLeftVal":{"value":"","text":""},"conditionValueRightVal":{"value":"","text":""}},{"logicalOperator":"and","groupname":"groupname2","subgroupname":"groupname46197182796385294","rowlevel":"0","conditionFieldVal":"DynamicCondition.sex","conditionOptionVal":"equal","conditionValueVal":{"value":"1","text":"男"},"conditionValueLeftVal":{"value":"","text":""},"conditionValueRightVal":{"value":"","text":""}}]
</script>
4.调用setHideCondition和setCondition初始化条件
//即buildRequestData时会添加进去提交给服务器,但界面上不显示,用户不知道这些条件(或者知道但这些条件不需要改变)
dc.setHideCondition($("#hideCondtion").html());
dc.setCondition($("#initCondtion").html());
修复自动选择默认选项问题。首选li中定义ops中第一个选项,没定义ops则,选config.opsList的第一个选项。
比如希望默认选项是包含而不是等于,可以修改dcConfig.js中的opsList,让like排第一位。
如果不希望改全局,只希望改一个页面,则可以修改dynamicCondition.create(config)中config.opsList的值。
如果只希望改某个选项,则可以修改li的ops属性。如:
<li field="name" title="姓名" edit="text" ops="like,equal"></li>
这样就只有姓名条件默认首选项是包含开始,其他的条件默认首选先还是等于
修复07-23号引入的bug。解决选项切换不生效问题。
取消unpopupBtnswidth配置,页面自动适应宽度,不用手动配置。
修复bug。当定义ops时,如果切换条件,会指定操作选项,option会自动选择ops第一个选项。
li设置初始值属性改为init-val,init-left-val,init-right-val。
之前2019-04-27版本initVal,initLeftVal,initRightVal的大小写与浏览器不兼容。
优化,解决引入外部jquery版本时使用size()报错问题。
1.修复输入框按回车无法触发查询问题。
2.优化条件是否有效逻辑。between操作值为空时,应该判断条件为无效。
兼容性优化,兼容之前版本。
下一步准备实现嵌套查询的初始条件设置,以及简化 下拉框级联场景 使用方法。
目前虽然能实现下拉框级联,但不是很友好。
兼容v3版本。
新增支持嵌套条件查询,即条件可以通过括号以及逻辑链接符“或”和“且”拼接。
只需在config中配置nestedQuery:true。
修复v3.1.0中的bug
1.自定义操作选项
可以方便的扩展 操作选项中的 等于,包含,范围,开始字符,结束字符 选项,并且可以下拉框选择时的排列顺序。config相关配置如下:
//可以自定义操作选项,特例between会创建2个编辑控件;empty和notempty不会创建编辑控件
opsMap: {"greater_than":"大于","less_than":"小于"},//新增操作选项,
opsList:["equal","like","between","start","end","unequal","empty","greater_than"],//操作选项列表
2.请求添加附加参数
比如希望后台获取参数的类型,可以如下配置:
2.1.首先在config中配置:
//请求时会附带<li>标签定义的额外的参数
,extraParams:["datatype"]
2.2.然后在li中配置:
<li field="DynamicCondition.name" title="姓名" ops="equal,like,end" datatype="string" edit="text" placeholder="请输入姓名" layVerify=""></li>
这样后台就可以获取到DynamicCondition.name字段是string类型。
修复conditionOption切换操作条件后未重新渲染导致下拉框不显示问题。
优化:文本输入框,按回车键触发查询操作
支持从dcConfig中扩展编辑器。新增下拉树编辑器treeSelect
li新增initVal,initLeftVal,initRightVal属性初始便于初始控件值。
新增parseToRequest方法。用于直接使用js解析生成请求参数。
li新增dateType属性。支持日期选择格式化。默认值为“date”。
text和date编辑器支持placeholder特性。
修复select编辑器templet对应select的id重复导致不正常显示问题。
修复counts值大于条件数时显示异常问题。