Oracle APEX 样式 APEX_ITEM 动态表单元素
Oracle APEX style APEX_ITEM Dynamic form elements
我遵循了 this post on how to create dynamic items in APEX. The documentation 的说明,清楚地了解如何创建项目,但我不知道如何使项目看起来像原生 APEX 项目。
我曾尝试复制不同的 CSS 类,我可以看到它附加到本机项目,但对于我来说,我无法让动态创建的表单元素看起来和行为相同.
如有任何帮助,我们将不胜感激。
如果您使用的是 Chrome 浏览器,那么获取所有样式的最简单方法是使用浏览器复制样式。
右键单击本地创建的项目并select 检查。
右键单击“元素”选项卡下的 selected HTML 元素,然后转到 复制 => 复制样式
这将为您提供与本机项目关联的样式。现在将这些样式分配给动态生成的项目。
您需要为每种项目类型执行此操作。
此致,
萨利姆
嗨 - 只是为了补充 Dan 和 Salim 的评论和建议。我同意对于这个特定的用例,APEX_ITEM 工作得很好。然而,正如 Dan 指出的那样,APEX_ITEM API 被认为是遗留代码。虽然我们可能永远不会真正从 APEX 中删除这个 API,因为这会破坏太多应用程序,但我们不打算进一步开发这个 API。原因有很多,但真正归结为 APEX_ITEM API 使用自己的代码来呈现页面项,并且所有新组件(包括标准表单项和交互式网格表单项)共享相同的,更多现代实施,与通用主题完全集成且可访问。将表单项提交到服务器的方式以及处理此数据的方式也存在显着差异。我们正在努力在未来为 APEX_ITEM 提供更好的替代方案。
- 马克
这应该有帮助:
with
TP_ORDEM_SERV_REC as (
select C.ID_FUNCAO,
C.QT_EXEC
from TB_ORDEM_SERV_REC C
where C.ID_ORDEM_SERV = :P922_ID_ORDEM_SERV
and C.NUM_TAR = :P922_NUM_TAR)
select A.DESC_SUPLEMENT FUNCAO,
'<div class="t-Form-fieldContainer t-Form-fieldContainer--floatingLabel lto'||A.ID_SUPLEMENT||' apex-item-wrapper apex-item-wrapper--text-field" id="it_'||A.ID_SUPLEMENT||'_CONTAINER">'||
'<div class="t-Form-labelContainer">'||
'<label for="it_'||A.ID_SUPLEMENT||'" id="it_'||A.ID_SUPLEMENT||'_LABEL" class="t-Form-label">Quant. Exec.</label>'||
'</div>'||
'<div class="t-Form-inputContainer">'||
'<div class="t-Form-itemWrapper">'||
'<input type="hidden" name="f01" value="'||A.ID_SUPLEMENT||'" />'||
'<input type="text" name="f02" id="it_'||A.ID_SUPLEMENT||'" class="text_field apex-item-text" value="'||A.QT_EXEC||'" size="1" maxlength="2">'||
'</div>'||
'<span id="it_'||A.ID_SUPLEMENT||'_error_placeholder" class="a-Form-error" data-template-id="'||A.ID_SUPLEMENT||'_ET"></span>'||
'</div>'||
'</div>' QT_EXEC
from TB_SUPLEMENT A,
TB_USUARIO B,
TP_ORDEM_SERV_REC C
where A.FLAG_CTRL = 15
and B.ID_OFICINA = :P922_ID_OFICINA
and A.ID_SUPLEMENT = B.ID_FUNCAO
and B.ID_FUNCAO = C.ID_FUNCAO (+)
group by A.DESC_SUPLEMENT,A.ID_SUPLEMENT,C.QT_EXEC
然后,只需使用apex_application.g_f
正常操作过程中的结果即可。
我遵循了 this post on how to create dynamic items in APEX. The documentation 的说明,清楚地了解如何创建项目,但我不知道如何使项目看起来像原生 APEX 项目。
我曾尝试复制不同的 CSS 类,我可以看到它附加到本机项目,但对于我来说,我无法让动态创建的表单元素看起来和行为相同.
如有任何帮助,我们将不胜感激。
如果您使用的是 Chrome 浏览器,那么获取所有样式的最简单方法是使用浏览器复制样式。
右键单击本地创建的项目并select 检查。 右键单击“元素”选项卡下的 selected HTML 元素,然后转到 复制 => 复制样式
这将为您提供与本机项目关联的样式。现在将这些样式分配给动态生成的项目。
您需要为每种项目类型执行此操作。
此致, 萨利姆
嗨 - 只是为了补充 Dan 和 Salim 的评论和建议。我同意对于这个特定的用例,APEX_ITEM 工作得很好。然而,正如 Dan 指出的那样,APEX_ITEM API 被认为是遗留代码。虽然我们可能永远不会真正从 APEX 中删除这个 API,因为这会破坏太多应用程序,但我们不打算进一步开发这个 API。原因有很多,但真正归结为 APEX_ITEM API 使用自己的代码来呈现页面项,并且所有新组件(包括标准表单项和交互式网格表单项)共享相同的,更多现代实施,与通用主题完全集成且可访问。将表单项提交到服务器的方式以及处理此数据的方式也存在显着差异。我们正在努力在未来为 APEX_ITEM 提供更好的替代方案。 - 马克
这应该有帮助:
with
TP_ORDEM_SERV_REC as (
select C.ID_FUNCAO,
C.QT_EXEC
from TB_ORDEM_SERV_REC C
where C.ID_ORDEM_SERV = :P922_ID_ORDEM_SERV
and C.NUM_TAR = :P922_NUM_TAR)
select A.DESC_SUPLEMENT FUNCAO,
'<div class="t-Form-fieldContainer t-Form-fieldContainer--floatingLabel lto'||A.ID_SUPLEMENT||' apex-item-wrapper apex-item-wrapper--text-field" id="it_'||A.ID_SUPLEMENT||'_CONTAINER">'||
'<div class="t-Form-labelContainer">'||
'<label for="it_'||A.ID_SUPLEMENT||'" id="it_'||A.ID_SUPLEMENT||'_LABEL" class="t-Form-label">Quant. Exec.</label>'||
'</div>'||
'<div class="t-Form-inputContainer">'||
'<div class="t-Form-itemWrapper">'||
'<input type="hidden" name="f01" value="'||A.ID_SUPLEMENT||'" />'||
'<input type="text" name="f02" id="it_'||A.ID_SUPLEMENT||'" class="text_field apex-item-text" value="'||A.QT_EXEC||'" size="1" maxlength="2">'||
'</div>'||
'<span id="it_'||A.ID_SUPLEMENT||'_error_placeholder" class="a-Form-error" data-template-id="'||A.ID_SUPLEMENT||'_ET"></span>'||
'</div>'||
'</div>' QT_EXEC
from TB_SUPLEMENT A,
TB_USUARIO B,
TP_ORDEM_SERV_REC C
where A.FLAG_CTRL = 15
and B.ID_OFICINA = :P922_ID_OFICINA
and A.ID_SUPLEMENT = B.ID_FUNCAO
and B.ID_FUNCAO = C.ID_FUNCAO (+)
group by A.DESC_SUPLEMENT,A.ID_SUPLEMENT,C.QT_EXEC
然后,只需使用apex_application.g_f
正常操作过程中的结果即可。