使用自定义模板创建表单

问题描述 投票:0回答:1

我的 APEX 应用程序的要求之一是能够拥有包含动态数量条目的表单以及过滤/搜索特定条目的能力。 由于开箱即用的表单区域需要表单条目对应于数据库列,因此完成此任务相当困难。

在我看来,最好的选择是创建一个自定义模板,其外观和交互方式就像表单一样,以便每个条目对应于一行而不是一列,这会更容易处理。 由于所有条目都对应于本实例中的行,因此过滤/搜索会更加容易,并且如果需要,非开发人员可以很容易地更改任何给定时间的总条目。

到目前为止,我的自定义模板使用以下行模板:

<div class="t-Form-fieldContainer t-Form-fieldContainer--floatingLabel t-Form-fieldContainer--preTextBlock t-Form-fieldContainer--postTextBlock lto1556169442680158453_0 apex-item-wrapper apex-item-wrapper--select-list js-show-label" id="P200_#ID#_CONTAINER">
  <span class="t-Form-itemText t-Form-itemText--pre">
            <b>#PRE_TEXT_ID#</b>
        </span>
  <div class="t-Form-labelContainer">
    <label for="P200_#ID#" id="P200_#ID#_LABEL" class="t-Form-label">#NAME#</label>
  </div>
  <div class="t-Form-inputContainer">
    <div class="t-Form-itemWrapper">
      <select id="P200_#ID#" name="P200_#ID#" class="selectlist apex-item-select" data-native-menu="false" size="1" style="background-color: #BACKGROUND_COLOR#;">
        <option value=""></option>
        <option value="1">Yes</option>
        <option value="3">No, PRT Action!</option>
        <option value="4" selected="selected">No, Escalation</option>
        <option value="5">N/A</option>
      </select>
      <span class="t-Form-itemText t-Form-itemText--post">
                    <a href="#POST_TEXT_LINK#" class="#POST_TEXT_ICON#"></a>
                </span>
    </div>
    <span id="P200_#ID#_error_placeholder" class="a-Form-error" data-template-id="1548925300217985001_ET"></span>
  </div>
</div>

这会生成一个“表单”,看起来正是我需要的样子,但在完全实现它时我遇到了两个主要问题:

  1. 作为条目创建的选择列表无法硬编码到模板中。 我最初的想法是在我的经典报告的源查询中构建
    <option value="x">blah blah</option>
    行,但这会对该区域的可读性产生负面影响。我想知道是否有一种替代方法允许在模板内完成一些“处理”
  2. 当用户在运行时更改其中一个选择列表时,我需要处理一些数据。 我不知道如何访问从此查询创建的选择列表包含的内容,也不知道如何在更改时访问选择列表的
    #ID#

任何有关此问题的帮助,或针对满足我的要求的完全不同的替代方案的建议,将不胜感激。

oracle-apex
1个回答
0
投票

也许您不需要创建自己的模板。您需要做的是操作区域源以使用 PIVOTING 查询。然后使用目标类型

Form - Automatic Row Processing (DML)
自定义
PL/SQL Code
流程,在处理过程中使用循环。

© www.soinside.com 2019 - 2024. All rights reserved.