Я создаю шаблон с большим количеством полей, и около 50% этих полей являются необязательными, поэтому они часто бывают только (нулевые) в моей базе данных. Можно ли что-то сделать, чтобы поля без значения не отображались?
{тег} будет удален, когда он пуст. Если вы хотите, чтобы некоторые блоки исчезли, вы можете обернуть это в условии,
например:
{#tags==null} {product_name}: {product_description} {/tags==null} {#tags!==null} {product_name}: {tags} {/tags!==null}
или если у вас есть значение:
{#checked=="Yes"}☒Yes ☐No{/checked=="Yes"}{#checked!="Yes"} ☐Yes ☒No {/checked!="Yes"}
Моим вторым вопросом будет работа с функцией печати и флажками. Как интегрировать элемент APEX_APPLICATION.G_F01, чтобы я печатал только содержимое выбранного флажка? На самом деле он не работает в разделе PL / SQL.
Используете ли вы плагин типа процесса AOP или плагин динамического действия?
Например, мы используем его для себя при выборе счетов-фактур и их печати.
У нас есть флажок в ИК:
apex_item.checkbox2(
p_idx => 1,
p_value => id,
p_attributes => 'class="invoice_id"',
p_checked_values => :P39_INVOICE_ID_LIST,
p_checked_values_delimiter => ',') as chk,
И затем у нас есть Динамическое действие при изменении, которое устанавливает скрытый элемент (P39_INVOICE_ID_LIST) на странице:
var
//Checkbox that was changed
$checkBox = $(this.triggeringElement),
//DOM object for APEX Item that holds list.
apexItemIDList = apex.item(this.affectedElements.get(0)),
//Convert comma list into an array or blank array
//Note: Not sure about the "?" syntax see: http://www.talkapex.com/2009/07/javascript-if-else.html
ids = apexItemIDList.getValue().length === 0 ? [] : apexItemIDList.getValue().split(','),
//Index of current ID. If it's not in array, value will be -1
idIndex = ids.indexOf($checkBox.val())
;
//If box is checked and it doesn't already exist in list
if ($checkBox.is(':checked') && idIndex < 0) {
ids.push($checkBox.val());
}
//If box is unchecked and it exists in list
else if (!$checkBox.is(':checked') && idIndex >= 0){
ids.splice(idIndex, 1);
}
//Convert array back to comma delimited list
apexItemIDList.setValue(ids.join(','));
В нашем запросе в AOP DA мы имеем:
where i.id in (select regexp_substr(:P39_INVOICE_ID_LIST,'[^,]+', 1, level) invoice_id
from dual
connect by regexp_substr(:P39_INVOICE_ID_LIST, '[^,]+', 1, level) is not null)
и мы гарантируем, что P39_INVOICE_ID_LIST установлен в состояние сеанса, указав Затронутые элементы вызова плагина AOP.
Если вы настроите пример того, что вы хотите сделать на apex.oracle.com, я с радостью предоставлю вам пример. В AOP 4.0 мы также включим пример с флажками.
Надеюсь, это поможет,
Dimitri