You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle APEX新手求助:手动表格表单选择列表更新后显示异常

Fixing Manual Tabular Form Select List Display After Update in Oracle APEX

Hey there! Let's work through this issue you're hitting with your manual tabular form using collections. It's a classic gotcha when working with APEX collections—your database updates successfully, but the select list on the page stays stuck on the old value. Here's why that's happening and how to fix it:

The Root Cause

When you update the database, you're only modifying the backend table—but the page is still rendering the data from the collection you loaded on page load. If you don't update the collection to match the database changes, the select list will keep showing the original value stored in the collection.

Step-by-Step Fixes

  • Update the collection alongside the database
    Whenever you run your update PL/SQL, add code to sync the corresponding collection element with the new value. Use the APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE procedure to modify the specific attribute in your collection that maps to the select list.

    Example PL/SQL block (adjust to match your collection/table structure):

    -- First, update your database table
    UPDATE your_target_table
    SET status_id = :PXX_STATUS_ID -- Replace with your select list's bind variable
    WHERE record_id = :PXX_RECORD_ID; -- Unique ID for the row being updated
    
    -- Now sync the collection with the new value
    APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE(
        p_collection_name => 'YOUR_COLLECTION_NAME', -- Name of your collection
        p_seq             => :PXX_COLLECTION_SEQ, -- Sequence number of the collection element (from your tabular form row)
        p_attr_number     => 2, -- Attribute number in the collection that holds the select list value (adjust to your setup)
        p_attr_value      => :PXX_STATUS_ID -- The new value from the select list
    );
    
    COMMIT;
    
  • Refresh the tabular form region
    After updating the collection, you need to tell APEX to re-render the tabular form so it pulls the fresh data from the updated collection. To do this:

    1. Go to your update button's processing branch.
    2. Add a "Refresh" action targeting your tabular form region.
    3. If you're using a dynamic action to handle updates, add the region refresh as a post-action after the PL/SQL executes.
  • Double-check your select list binding
    Make sure your select list's "Value" property is directly bound to the collection attribute, not a static page item. For example, if your select list maps to the 2nd attribute in the collection, the value should be COLLECTION_ATTRIBUTE(2) (not something like :PXX_OLD_VALUE). This ensures when the region refreshes, it pulls the updated value from the collection.

  • Debug to confirm collection updates
    If you're still having trouble, add a quick debug check in your PL/SQL to verify the collection is being updated correctly:

    -- Add this after the UPDATE_MEMBER_ATTRIBUTE call
    DBMS_OUTPUT.PUT_LINE(
        'Updated collection attribute value: ' || 
        APEX_COLLECTION.GET_MEMBER_ATTRIBUTE('YOUR_COLLECTION_NAME', :PXX_COLLECTION_SEQ, 2)
    );
    

    Enable DBMS Output in your APEX session to see if the value matches what you selected in the select list.

Once you implement these steps, your select list should display the updated value immediately after saving—since both the database and the collection are in sync, and the page refreshes to show the latest collection data.

内容的提问来源于stack exchange,提问作者user2874043

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:09:44