Oracle Apex 同时提交和打开模式

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

我想在提交时执行双重操作。

此时我有一个表单,我需要在提交时同时执行两个操作。下面是创建 n 个选项卡和每个选项卡内 n 个记录行的第一个操作。现在,我尝试保持此功能有效,并从另一个页面打开一个模式窗口,并在每次单击“提交”按钮时重新提交该页面。

BEGIN
    IF (:P2_CREATE_TABS != 0 OR :P2_CREATE_TABS != NULL) AND :P2_CREATE_TABS <= 5 THEN
        htp.p ('<nav><div class="nav nav-tabs" id="nav-tab" role="tablist">');
        FOR k IN 1..:P2_CREATE_TABS
        LOOP
            IF k = 1 THEN
                htp.p ('<a class="nav-item nav-link active" id="nav-'||k||'-tab" data-toggle="tab" href="#nav-'||k||'" role="tab" aria-controls="nav-'||k||'" aria-selected="true">Document '||k||'</a>');
            ELSE
                htp.p ('<a class="nav-item nav-link" id="nav-'||k||'-tab" data-toggle="tab" href="#nav-'||k||'" role="tab" aria-controls="nav-'||k||'" aria-selected="false">Document '||k||'</a>');
            END IF;
        END LOOP;
        htp.p('</div></nav><div class="tab-content" id="nav-tabContent">');
        FOR l IN 1..:P2_CREATE_TABS
        LOOP
            IF l = 1 THEN
                htp.p ('<div class="tab-pane fade show active" id="nav-'||l||'" role="tabpanel" aria-labelledby="nav-'||l||'-tab">');
                    IF (:P2_LINES != 0 OR :P2_LINES != NULL) AND :P2_LINES < 20 THEN
                       htp.p ('<div class="row"><div class"col-md-6"  style="margin-left: 17em;"><table class="table">');
                       FOR i IN 1..:P2_LINES
                       LOOP
                           IF MOD(i,2) != 0 THEN
                               htp.p ('<thead><tr><th scope="col"> </th><th scope="col">Name</th><th scope="col">Type</th><th scope="col">Width</th><tbody>');
                               htp.p ('<tr><th scope="row">'|| i ||'</th><td>');
                               htp.p ( APEX_ITEM.HIDDEN(
                                   p_idx => 1,
                                   p_item_label => 'ID') );
                               htp.p ( APEX_ITEM.TEXT(
                                   p_idx => 2, 
                                   p_item_label => 'Name',
                                   p_attributes => 'class="form-control"'));
                               htp.p ('</td><td>');
                               htp.p ( APEX_ITEM.SELECT_LIST(
                                   p_idx           =>   3,
                                   p_list_values   =>   'Numeric;20',
                                   p_show_null     =>   'YES',
                                   p_null_value    =>   '10',
                                   p_null_text     =>   'Alphnumeric',
                                   p_item_label => 'Type',
                                   p_attributes => 'class="form-control"') );
                               htp.p ('</td><td>');
                               htp.p ( APEX_ITEM.TEXT(
                                   p_idx => 3, 
                                   p_item_label => 'Width',
                                   p_attributes => 'class="form-control"') );
                               htp.p ('</td></tr>');
                           END IF;
                        END LOOP;
                        htp.p ('</tbody></table></div><div class"col-md-6" style="margin-left: 17em;"><table class="table">');
                        FOR j IN 2..:P2_LINES
                        LOOP
                            IF MOD(j,2) = 0 THEN
                                htp.p ('<thead><tr><th scope="col"> </th><th scope="col">Name</th><th scope="col">Type</th><th scope="col">Width</th><tbody>');
                                htp.p ('<tr><th scope="row">'|| j ||'</th><td>');
                                htp.p ( APEX_ITEM.HIDDEN(
                                    p_idx => 1,
                                    p_item_label => 'ID') );
                                htp.p ( APEX_ITEM.TEXT(
                                    p_idx => 2, 
                                    p_item_label => 'Name',
                                    p_attributes => 'class="form-control"'));
                                htp.p ('</td><td>');
                                htp.p ( APEX_ITEM.SELECT_LIST(
                                   p_idx           =>   3,
                                   p_list_values   =>   'Numeric;20',
                                   p_show_null     =>   'YES',
                                   p_null_value    =>   '10',
                                   p_null_text     =>   'Alphnumeric',
                                   p_item_label => 'Type',
                                   p_attributes => 'class="form-control"') );
                                htp.p ('</td><td>');
                                htp.p ( APEX_ITEM.TEXT(
                                    p_idx => 3, 
                                    p_item_label => 'Width',
                                    p_attributes => 'class="form-control"') );
                                htp.p ('</td></tr>');
                            END IF;
                        END LOOP;
                        htp.p ('</tbody></table></div></div>');  
                    END IF;       
                htp.p ('</div>');
            END IF;
                htp.p ('<div class="tab-pane fade" id="nav-'||l||'" role="tabpanel" aria-labelledby="nav-'||l||'-tab">');
                    IF (:P2_LINES != 0 OR :P2_LINES != NULL) AND :P2_LINES < 20 THEN
                       htp.p ('<div class="row"><div class"col-md-6"  style="margin-left: 17em;"><table class="table">');
                       FOR i IN 1..:P2_LINES
                       LOOP
                           IF MOD(i,2) != 0 THEN
                               htp.p ('<thead><tr><th scope="col"> </th><th scope="col">Name</th><th scope="col">Type</th><th scope="col">Width</th><tbody>');
                               htp.p ('<tr><th scope="row">'|| i ||'</th><td>');
                               htp.p ( APEX_ITEM.HIDDEN(
                                   p_idx => 1,
                                   p_item_label => 'ID') );
                               htp.p ( APEX_ITEM.TEXT(
                                   p_idx => 2, 
                                   p_item_label => 'Name',
                                   p_attributes => 'class="form-control"'));
                               htp.p ('</td><td>');
                               htp.p ( APEX_ITEM.SELECT_LIST(
                                   p_idx           =>   3,
                                   p_list_values   =>   'Numeric;20',
                                   p_show_null     =>   'YES',
                                   p_null_value    =>   '10',
                                   p_null_text     =>   'Alphnumeric',
                                   p_item_label => 'Type',
                                   p_attributes => 'class="form-control"') );
                               htp.p ('</td><td>');
                               htp.p ( APEX_ITEM.TEXT(
                                   p_idx => 3, 
                                   p_item_label => 'Width',
                                   p_attributes => 'class="form-control"') );
                               htp.p ('</td></tr>');
                           END IF;
                        END LOOP;
                        htp.p ('</tbody></table></div><div class"col-md-6" style="margin-left: 17em;"><table class="table">');
                        FOR j IN 2..:P2_LINES
                        LOOP
                            IF MOD(j,2) = 0 THEN
                                htp.p ('<thead><tr><th scope="col"> </th><th scope="col">Name</th><th scope="col">Type</th><th scope="col">Width</th><tbody>');
                                htp.p ('<tr><th scope="row">'|| j ||'</th><td>');
                                htp.p ( APEX_ITEM.HIDDEN(
                                    p_idx => 1,
                                    p_item_label => 'ID') );
                                htp.p ( APEX_ITEM.TEXT(
                                    p_idx => 2, 
                                    p_item_label => 'Name',
                                    p_attributes => 'class="form-control"'));
                                htp.p ('</td><td>');
                                htp.p ( APEX_ITEM.SELECT_LIST(
                                   p_idx           =>   3,
                                   p_list_values   =>   'Numeric;20',
                                   p_show_null     =>   'YES',
                                   p_null_value    =>   '10',
                                   p_null_text     =>   'Alphnumeric',
                                   p_item_label => 'Type',
                                   p_attributes => 'class="form-control"') );
                                htp.p ('</td><td>');
                                htp.p ( APEX_ITEM.TEXT(
                                    p_idx => 3, 
                                    p_item_label => 'Width',
                                    p_attributes => 'class="form-control"') );
                                htp.p ('</td></tr>');
                            END IF;
                        END LOOP;
                        htp.p ('</tbody></table></div></div>');  
                    END IF;       
                htp.p ('</div>');
        END LOOP;
        htp.p('</div>');
    END IF;
END; 

我创建了一个隐藏项目,并将其链接到一个使用 PL/SQL 函数体提交后的计算,代码如下:

BEGIN
    IF :P2_CUST_NAME != '' AND :P2_ORG_NUM != NULL AND :P2_CONTACT_NUM != NULL AND :P2_EMAIL != '' THEN
        RETURN 'Y';
    END IF;
END;

在使用服务器端条件

When Button Pressed = MY_BUTTON
处理并将行为设置为所需页面后创建了一个分支。

下一步,我使用

Event=Dialogue Closed
Selection Type=Region
创建了一个动态操作,对于区域,我选择了具有提交按钮的区域。

此时,如果我在前两个输入字段中有一些内容,则在选项卡内创建选项卡和字段将自动动态创建它们,而无需任何提交,因为我没有强制清除缓存。如果我更改值并输入其余字段,则会出现狂野模式窗口,但未提交页面,并且不会再次从字段获取数据以构建其他结构。

我想我已经很接近了,但我不知道我做错了什么。

提前致谢!

oracle plsql oracle-apex
2个回答
2
投票

尝试制作一个Branch After Process,它将在单击Submit Button时运行,然后在其设置中的下部,您可以看到“Advanced”,您可以在其中设置Request。您可以设置/命名任何请求,例如将其设置为“OPEN_MODAL”。

然后在提交后的重定向页面(其他页面或同一页面)上,在页面加载时执行动态操作,打开模态(javascript 或 pl sql),然后将其条件设置为 REQUEST = VALUE 并将值设置为 ' OPEN_MODAL'

这将在提交主页后在重定向页面上打开模式。

希望这有帮助。


0
投票

非常好的答案 - 使用 REQUEST_VALUE 进行重定向 - 非常感谢!

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