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) + ") ";
}
}
}
/**
* Создает строку параметров на основе количества параметров. Например, для двух параметров вернет ? , ?
* @param num Число должно быть больше нуля, например: 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();
}
шаблон="Да:N|Нет:Y"
.Примечание: Множественный выбор может быть представлен не только чекбоксами, но также текстовым полем. В случае использования текстового поля пользователю необходимо самостоятельно указывать значения через запятую. Например, если условие "Имя пользователя" выбрано как множественный выбор, то ввод значений "Пётр, Сергей" позволит выполнить множественный выбор. Также можно создать кастомный редактор множественного выбора со списком значений.
setCondition принимает JSON-строку в качестве параметра.
Обновите функцию setCondition
. Добавлен метод getCondition
и метод setHideCondition
. Теперь setCondition
принимает JSON-строку в качестве аргумента.
Для справки можно использовать страницу с вложенными запросами. Перейти к примеру
Способ использования:
dc.getCondition()
.<script id="initCondition" 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="hideCondition" 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>
setHideCondition
и setCondition
.// При сборке данных запроса эти условия будут добавлены для отправки серверу, но они не отображаются на экране пользователя (или отображаются, но пользователю не требуется менять их)
dc.setHideCondition($("#hideCondition").html());
dc.setCondition($("#initCondition").html());
Исправление проблемы автоматического выбора по умолчанию для опций. В первом элементе списка <li>
определяется первый вариант из массива ops
. Если ops
не определены, то выбирается первый элемент из config.opsList
.
Например, если вы хотите сделать по умолчанию условие "содержит", а не "равно", можно изменить порядок в opsList
файла dcConfig.js
, поместив like
на первое место.
Если вам не требуется глобальное изменение, а только для одного конкретного экрана, вы можете изменить значение config.opsList
в методе dynamicCondition.create(config)
.
Если же вы хотите изменить только для определённого условия, вы можете указать свойство ops
для этого элемента <li>
. Например:
<li field="name" title="Имя" edit="text" ops="like,equal"></li>
Таким образом, для условия "Имя" будет выбрано по умолчанию значение "содержит", а для остальных условий — "равно".
Исправление бага, введенного 07-23. Решение проблемы с отключенным эффектом при переключении опций.
Отмена конфигурации unpopupBtnswidth; страница автоматически адаптируется к ширине, нет необходимости вручную её настраивать.
Исправление ошибки. При определении операций (ops), если меняется условие переключения, то опция действий (option) автоматически выбирается первым вариантом из ops.
Свойство установки начальных значений li изменено с initVal на init-val, initLeftVal на init-left-val, а initRightVal на init-right-val.
Ранее, в версии от 27 апреля 2019 года, значения initVal, initLeftVal и initRightVal имели проблемы совместимости с браузерами из-за различий в регистре букв.
Оптимизация, решение проблемы ошибки при использовании метода size() с внесенной внешней версией jQuery.
Оптимизация совместимости с предыдущими версиями.
Следующий шаг — реализация начальных условий для вложенных запросов и упрощение метода использования связывания выпадающих списков.
Хотя текущая реализация позволяет использовать связывание выпадающих списков, это не очень удобно.
скобок и логических связей "или" и "и".
Совместимо с версией v3.
Добавлена поддержка вложенных условий запроса, то есть условия могут быть объединены с помощью скобок и логических связок "или" и "и".
Необходимо указать nestedQuery: true в конфигурационном файле.
Исправление бага в версии v3.1.0
выполнении запросов можно дополнительно указывать параметры, такие как тип данных параметра.
// Можно создать пользовательские операционные опции, где between создаёт два поля для ввода; empty и notempty не создают никаких полей для ввода
opsMap: {"greater_than": "больше", "less_than": "меньше"}, // Добавление новых операционных опций,
opsList: ["equal", "like", "between", "start", "end", "unequal", "empty", "greater_than"], // Список доступных операционных опций
2.1. В конфигурации добавьте:
// При отправке запроса будут прикреплены дополнительные параметры, определённые в <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
, которое не приводило к перерendering и, как следствие, не отображалось в выпадающем списке.
Оптимизация: текстовое поле ввода, нажатие клавиши Enter запускает операцию запроса.
Поддержка расширения редактора из dcConfig. Добавлен новый выпадающий древовидный редактор treeSelect.
Добавлены свойства initVal, initLeftVal, initRightVal для инициализации начальных значений контроллера.
параметров запроса.
Добавлен метод parseToRequest
. Используется для прямого парсинга с помощью JavaScript и генерации параметров запроса.
Ли добавлен атрибут dateType. Поддерживает форматирование выбора дат. По умолчанию значение равно "date".
Редакторы text и date поддерживают характеристики placeholder.
Исправлена проблема с повторением id в шаблоне select редактора, что приводило к неправильному отображению.
Исправлено异常显示问题,当 counts值大于条件的数量时。