Intersection Shuttle

Hi,
I have implemented an intersection-shuttle with JHS following the Oracle JHeadstart 10g for ADF Release 10.1.3. It works fine, but when I try to delete a selected row, it disappears of the list but not of the database.
Any suggestions?

Am I right that you want to delete a row in the intersection table, by shuttling it from the selected list to the unselected list and clicking Save?
Enable the ADF Business Component Diagnostics (see http://download.oracle.com/docs/html/B25947_01/bcquerying005.htm#CHDBBEEB), and check which update/delete commands are sent to the database. Maybe that helps to identify what happens.
Hope this helps,
Sandra Muller
JHeadstart Team
Oracle Consulting

Similar Messages

  • Intersection-shuttle not working

    Hi,
    I am using JHeadStart 10.1.3. i displayed detail records in sub tab of parent form page as intersection-shuttle.
    Shuttle is displaying results correctly. But after moving some results fom left to right and clicking on Save button, i am getting "No changes to Save" message instead of saving the results.
    Please any one help me on this?
    Regards,
    A V G K Raju

    I have the same issue after following the intersection-shuttle example in the JHS developers guide.
    I downloaded the hr demo application, but only found a parent-intersection example. not necessarily helpful for an intersection-shuttle.
    I would like to try and restart this thread. Any one out there have ideas.
    It seems as if the underlying VO does not know it has been modified. This is the case for adding rows or removing rows from the list.
    Thanks,
    Jim
    JDEV 10.1.3.4.0.4270 JHS 10.1.3.3.81
    Edited by: 170412 on Aug 7, 2009 2:50 PM

  • Intersection Shuttle and JhsTabbedChildrenTemplate compatibility

    Hello JHS Team,
    I am using the document titled "Building J2EE Applications with Oracle JHeadstart for ADF".
    I am interested in the section "Step 5: Customize Generation Templates" which illustrates using "JhsTabbedChildrenTemplates.jtp" template.
    I have successfully used this template *** except *** when using the "intersection-shuttle".
    So far, no mater what I do, the "intersection-shuttle" does *** not *** exclusively display on its own tab.
    To be more explicit; I have 4 other tabs that are properly displayed, that is, they are mutually unique. When the "intersection-shuttle" is introduced into this existing structure, it shows up with each of the 4 other tabs.
    What's up with this behavior and what can I do to get it to behave as expected? It's supposed to show up only on the Tab it is associated with.
    Thanks,
    BG...

    Bill,
    The tabbed children templates are shipped as an example, and the sample only includes a tabbedTableGroup.jut to display children with layout style table on a tab.
    To display a child group with a different layout on a tab, a separate .jut file is required. To get your shuttle displayed on a tab, you should:
    - make a copy of shuttleChildGroup and name it something liked tabbedShuttleGroup
    - add the "rendered" property to the <header> element in this template as follows:
    <header id="$GROUP_NAME$Header" text="$NLS_GROUP_TAB_NAME$" rendered="${ui:cond('$GROUP_NR$'=='1',param.selectedTab==null or param.selectedTab=='' or param.selectedTab=='1',param.selectedTab=='$GROUP_NR$')}">
    - add this template to JhsTabbedChildrenTemplates.jut:
    shuttleChildGroup=template/tabbedShuttleGroup
    - generate your app
    Steven Davelaar,
    JHeadstart Team.

  • JHeadstart Version 10.1.2.0 Intersection Shuttle Trailing won't update

    I'm new to JHeadstart and think it is a great time saver, that is until you run into problems. I've been trying to figure out for quite some time now why the trailing listbox for my Intersection Shuttle won't update. I have confirmed that the database is being updated properly, the intersection table has the rows that should be displaying in the trailing listbox. The leading listbox is being updated correctly, the items I move over to the trailing listbox no longer appear in the leading listbox. But the trailing listbox always stays empty. Will someone please give me some pointers that I can use to try and figure out what's going on.
    Thanks,
    Rick

    Steven,
    Here is a snippet from the log. This is after moving one item from the leading list to the trailing list, then clicking the save button:
    11:46:52 DEBUG (JhsActionServlet) -Request class: com.evermind.server.http.EvermindHttpServletRequest
    11:46:52 DEBUG (JhsActionServlet) -Request URI: /MemberTop/EobSubmissionFiles.do
    11:46:52 DEBUG (JhsActionServlet) -Request Character Encoding: windows-1252
    11:46:52 DEBUG (JhsActionServlet) -Parameter EobGenerationSet3:trailing:items: UNSELECTED:589456;
    11:46:52 DEBUG (JhsActionServlet) -Parameter VB_EobSubmissionFilesTotalMembers:
    11:46:52 DEBUG (JhsActionServlet) -Parameter queryOperatorNonString: is
    11:46:52 DEBUG (JhsActionServlet) -Parameter EobGenerationSet3:trailing: UNSELECTED:589456
    11:46:52 DEBUG (JhsActionServlet) -Parameter pageTimeStamp: 1147283105872
    11:46:52 DEBUG (JhsActionServlet) -Parameter eventValue:
    11:46:52 DEBUG (JhsActionServlet) -Parameter createMode: true
    11:46:52 DEBUG (JhsActionServlet) -Parameter queryOperatorString: startsWith
    11:46:52 DEBUG (JhsActionServlet) -Parameter hasChanges: true
    11:46:52 DEBUG (JhsActionServlet) -Parameter multiRowUpdateEvent:
    11:46:52 DEBUG (JhsActionServlet) -Parameter caseSensitiveQuery: false
    11:46:52 DEBUG (JhsActionServlet) -Parameter VB_EobSubmissionFilesDateSubmitted:
    11:46:52 DEBUG (JhsActionServlet) -Parameter EobGenerationSet3:leading:items: UNSELECTED:589424;UNSELECTED:591922;UNSELECTED:590247;UNSELECTED:592051;UNSELECTED:590274;UNSELECTED:587362;UNSELECTED:593525;UNSELECTED:590144;UNSELECTED:589553;UNSELECTED:591517;UNSELECTED:591727;UNSELECTED:592222;UNSELECTED:587430;UNSELECTED:587535;UNSELECTED:565268;UNSELECTED:587436;UNSELECTED:589445;
    11:46:52 DEBUG (JhsActionServlet) -Parameter VB_EobSubmissionFilesFileid: EOBX0120060510002
    11:46:52 DEBUG (JhsActionServlet) -Parameter VB_EobSubmissionFilesUpdatedBy:
    11:46:52 DEBUG (JhsActionServlet) -Parameter event: Commit
    11:46:52 DEBUG (JhsActionServlet) -Parameter VB_EobSubmissionFilesDateUpdated:
    11:46:52 DEBUG (JhsActionServlet) -Parameter VB_EobSubmissionFilesFileStatus:
    11:46:52 DEBUG (RequestUtils) -Get module name for path /EobSubmissionFiles.do
    11:46:52 DEBUG (RequestUtils) -Module name found: default
    11:46:52 DEBUG (RequestProcessor) -Processing a 'POST' for path '/EobSubmissionFiles'
    11:46:52 DEBUG (RequestProcessor) - Setting user locale 'en_US'
    11:46:52 DEBUG (RequestProcessor) - Looking for Action instance for class oracle.jheadstart.controller.strutsadf.action.JhsDataAction
    11:46:52 DEBUG (RequestProcessor) - Returning existing Action instance
    11:46:52 DEBUG (JhsDataAction) -Executing action /EobSubmissionFiles
    11:46:52 DEBUG (JhsDataAction) -lastIssuedPageTimeStamp set to: 1147283212205
    11:46:52 DEBUG (JhsDataAction) -Found existing searchBean for EobSubmissionFilesUIModel
    11:46:52 DEBUG (JhsDataAction) -Stored searchBean for EobSubmissionFilesUIModel on request
    11:46:52 DEBUG (JhsDataAction) -ViewObject EdEligibilityGenerateViewLookup: bind parameter values have not changed
    11:46:52 DEBUG (JhsDataAction) -Commit event found in request, multi-row update executed
    11:46:52 DEBUG (JhsDataAction) -Executing action binding processIntersectionShuttle
    11:46:52 DEBUG (JhsDataAction) -executing onCommit
    11:46:52 DEBUG (JhsDataAction) -Refreshed shuttle iterator binding EobGenerationSet3Iterator
    11:46:52 DEBUG (JhsDataAction) -Refreshed shuttle iterator binding EdEligibilityGenerateLookupIterator
    11:46:52 DEBUG (JhsDataAction) -ViewObject EdEligibilityGenerateViewLookup: bind parameter values have not changed
    11:46:52 DEBUG (JhsDataAction) -Storing table binding factory under key jhsTableBindings on request
    11:46:52 DEBUG (JhsDataAction) -Forward set by parameter property returned: /WEB-INF/page/EobSubmissionFiles.uix
    11:46:52 DEBUG (RequestProcessor) -processForwardConfig(ForwardConfig[name=null,path=/WEB-INF/page/EobSubmissionFiles.uix,redirect=false,contextRelative=true])
    =====================================================
    I don't know if this helps, but it might.
    Thanks,
    Rick

  • Intersection Shuttle: wrong row deleted

    JHS 10.1.3.1.26
    I created an intersection shuttle and noticed that when I removed for example the 5th row in the shuttle and saved that mutation (delete row from intersection table), in fact the first row (from the viewobject) was deleted.
    I found that method "processUnselectedIntersectionShuttleRow" in class "JhsApplicationModuleImpl" does the job.
    Should there be a "intersectionVo.executeQuere()" between the lines
    intersectionVo.applyViewCriteria(vc);
    Row intersectionRow = intersectionVo.first();
    Frank

    Frank,
    That's correct, we already fixed this for the next release.
    Steven Davelaar,
    JHeadstart Team.

  • How to set the width of a shuttle?

    Hi
    I have a group which is shown in intersection-shuttle style but the problem is that it breaks some rows into two lines and i want to make the shuttle a bit wider. How could I set the width of the shuttle. Apparently the Group Width attribute of the group doesn't work for this.

    You could try this using the inlineStyle property of the shuttle component in the generated page. Not sure that works though. You better ask this on the JDeveloper forum.
    If it works you can create a custom template to include the inlineStyle property during generation.
    Steven Davelaar,
    Jheadstart Team.

  • Using a shuttle to update the status of a record

    I'm using JHeadstart 10.1.3. What I need to do is allow the users to select a record(s) that need to have it's status updated to show it's been rejected. I would like to acomplish this by using a shuttle, listing all the records that haven't been rejected and then allowing the user to shuttle over the records that require to have the status set to rejected. So essentialy, the two shuttle VO's would be for the same entity. On moving a record over from one shuttle to another all I want to happen is for the status of the record to change. This doesn't really seem to fit the mould of either a parent-shuttle or an intersection-shuttle :(
    Do I have to abandon the idea of using a shuttle and revert to something else ? If not the shuttle, what else would best serve my purpose here ? Can JHeadstart generate a tableSelectMany component ?
    Cheers,
    Brent

    Hi,
    What's the link between Printing the Smartform and Updating the HU status?
    Generally Smartform is used to print the Output of Packing Slip,?
    You mean after packing is over you have to Modify the handling Unit status?
    then you have to find the status of packing and based on that field you have to modify the JU status.
    Regards,
    Anji

  • Move 2 registers at the same time with ntersection-shuttle

    Hi,
    We are developping an application using Jheadstart 10.1.2.2 (build 32) with UIX pages as a view.
    We have included a new page using Intersection-shuttle but we have a little problem. If we use the link "Move ALL" or "Delete All" they run properly, but when we want to use the links "Move" or "Delete" they only run for a single value. We can not select more than one and move they together to the other column. For exemple, if exists 5 values in the right column (still not selected), we would like to select two of them in the same action and move they to the left column. Is it possible to do?
    Thanks in advanced.
    Xavier

    Hi Xavier,
    I'm not sure, but when I used intersection-shuttle with JHeadstart, it was generated with multiple selection enabled by default. This is a property of the "list" component (the boxes) called "multiple". Setting each one to "true" will enable multiple selection.
    Eduardo

  • A simpler explanation for creating shuttling

    Well,
    Looking at the tutorial provided for creating shuttling, it seems not to be the best way to get user started on this. Where did employee3 came from.
    I created a view link between two View Objects and I can see Jheadstart automatically created the groups and even Lookup list.
    Are Groups just the way Jheadstart organize the ViewObjects? I guess it's best on these Groups that we can make the Look up.
    I tell you, if Oracle ever end up making smaller examples/tutorials but to cover every base in creating all the components, that would work out really well.
    If anybody has a step by step approach in creating shuttles between two tables and Save, I'll greatly appreciate it.
    Thank you,
    Kamran

    Kamran,
    You want to create shuttles between two tables. JHeadstart supports two types of shuttles.
    The first decision you need to make is: do you want to create a parent shuttle or an intersection shuttle?
    With a parent shuttle where A is the parent and B is the child, you want to assign rows from B to be a direct child of A.
    With an intersection shuttle where you want to create intersections between tables A and B, you store the intersections in table C which has relations to both A and B.
    With parent shuttles, a row of B can only belong to at most one row of A. With intersection shuttles, a row of B can belong to many rows of A. Which one do you want?
    kind regards,
    Sandra Muller
    JHeadstart Team
    Oracle Consulting

  • Representing many-to-many relationships

    The data structure I am working with is a many-to-many relationship between clients and contacts, managed by a client_contact intersection table
    I have been rather unsuccessfully trying to use the JHeadstart generator to generate a master-detail style relationship between clients and contacts. The new intersection shuttle is great for being able to be maintain the intersection table and have that working fine but I would also like to set up a master-detail group
    I have created a ContactsForClient view that combines the Contacts and Client_contacts entities with a bind parameter of client id and created a view link between clients VO and the ContactsForClient VO. Setting this up in the JHeadstart generator works fine for displaying and modifying the associated contacts - but adding new contacts is where the problem lies. The ContactsForClient group uses a table structure with empty rows at the bottom for inserting new contacts. I am unsure of how to be able to manage the client_contact instersection table in behind the scenes. The ClientContactsImpl fires first - at which stage I only have client id and not the contact id. I want to be able to force the ContactsImpl to run first and retrieve the DB Sequence that was used to populate the contact id on the contacts table, using that to populate the client-contacts table.
    I saw some code to force a new dept to be posted before the emp record and thought I could utilise that but it does not work
      public void postChanges(TransactionEvent e) {
        System.out.println("In postChanges");
        if (getPostState() == STATUS_NEW)
          System.out.println("Status is new");
          ContactsImpl newContact = getContacts();
          if (newContact != null) {
            System.out.println("newContact not null");
            if (newContact.getPostState() == STATUS_NEW) {
              newContact.postChanges(e);
              // retrieve DB sequence used to populate contacts ct_id
              // and use to set clientcontacts ct_id
              System.out.println("newContact changes posted");
        super.postChanges(e);
      }newContact is always null ! I realise I could create separate screens to create the contacts and then the intersection-shuttle to assign them to a client but is there anyway I can do this in a way that mimics normal master-detail JHeadstart functionality ?
    Any help would be greatly appreciated !

    Managed to get my problem solved - I was over-complicating things ! I did however run into the reason (after a substantial process of elimination) why the postchanges method was not working as expected.
      public void postChanges(TransactionEvent e) {
        if ((getPostState() == STATUS_NEW) || (getPostState() == STATUS_MODIFIED)) {
          EntityImpl gio = getGoodsInOut();
          if (gio != null) {
            if (gio.getPostState() == STATUS_NEW) {
              gio.postChanges(e);
        super.postChanges(e);
      }My master EO is GoodsInOut and my detail EO is product. When I was running this code from the ProductsImpl, the getGoodsInOut() was always returning a null value and therefore I was unable to force the posting of the master before the detail. The problem turned out to be a "before insert for each row" trigger on the GoodsInOut table. This trigger was just setting the sequence but for some reason, after firing, causes the relationship between the GoodsInOut master and the Products detail to be lost, with getGoodsInOut() returning null. As soon as I dropped the database trigger and set the sequence in the EO's create method - it worked fine. I realise this is a "JDeveloper" question rather than a "JHeadstart" question so I will post this on the JDeveloper forum as well but thought you may have some ideas on why the database trigger is causing that behaviour and also how I can still retrieve the GoodsInOut EntityImpl with a database trigger (want this for auditing purposes) - perhaps make the call to getGoodsInOut at an earlier stage in the processing (ie before the database trigger runs) ?
    Cheers,
    Brent Harlow

  • Can Shuttles be based non-base  table ViewObjects with transient attributes

    Hello,
    Users have to select records from a data collection and a Shuttle looks most appropriate/nice for this purpose. We can introduce technical intersection tables in order to generate the Shuttles with JHeadstart 10g R3 if necessary, but there is no “functional” need to update any data in the database and therefore it would be practical if the ‘right’ side from a Shuttle can be based non-base table ViewObjects with transient attributes only. So, our interested is to know which records have been selected, i.e. moved to the right side from the Shuttle.
    Hope that my question is clear enough.
    Greetings,
    Michael

    Michael,
    This cannot be generated out-of-the-box.
    It is easiest to add the shuttle post-generation to your page, and then create a custom template to generate your custom shuttle into the page. I suggest you take a look at an example of a generated shuttle in a page, and the JHeadstart IntersectionShuttleBean class. You will see that the value property of <af:selectManyShuttle> points to the selectedKeys method in the JHeadstart Shuttle bean. In your case, you can create your own managed bean and bind the value property to your own method which will provide you access to the selected rows. The value property of the selectItem within the af:selectManyShuttle determines the property that is used to identify the selected row (which is the row key in case of Jhs-generated shuttles).
    Steven Davelaar,
    JHeadstart Team.

  • Shuttle Item problem in Apex 3.1.2

    Hi
    I created application based on shuttle items in apex earlier version.
    The same is not working fine in Apex 3.1.2 version.
    I'm not doing any process on shuttle items.
    Just created a shuttle item contains a list of values.
    whenever i refresh the page,(or say when i press Cancel button to go back to previous page)
    shuttle item selects all the values in the list, (i.e values in shuttle items are rolling).
    I somehow tried to replicate the same application in demo environment :
    http://apex.oracle.com/pls/otn/f?p=12822:4
    workspace: vsanthanam
    userid: vijay
    password: apex_demo
    If you see above application, whenever we press button submit. it selects all the values in
    Shuttle (actually rolling in my developement instance and not processing further).
    Is there anything that we have to take care while using shuttle in newer version?
    Thanks
    Vijay
    Edited by: Vijay Santhanam on Jan 26, 2009 9:39 PM

    Hi Arie
    Thanks for your valuable inputs.
    While analyzing the issue on two versions: 3.1.2 & 3.0.x ,I noticed few things:
    1) Limitation of 2000 values
    Had raised SR with Oracle, They have treated this as bug some time back and have temporary resolution as per BUG ID 7326899.
    This got temporarily resolved by setting higher value for PlsqlMaxParameters.
    As per my understanding: Shuttles never used to refer to this variable value In earlier version. We are on earlier version on one of the instance, where the value for this parameter is still 2000, and despite having more number of values in shuttles on page it never throws error. That shows its a change in new version and behavior is not same.
    2) Looping/ Going through all values in left box and then right box of shuttle when page submits.
    I am pretty sure at-least about the visual part that it never happened in earlier version what I see on my application on earlier version. But I am not sure about the page rendering / functionality part as this would need regression testing.
    So this is second change in shuttle behavior.
    Since Business users need all values to be present in the shuttle even after submit for resubmission i.e. again creating the records, so I have not put yet the java script suggested by you to put restriction on length so that it doesn’t loops through values.
    I went though the thread where Carl and You have discussed the issue:
    Shuttle Item in 3.1
    Thanks again Arie!
    I am also following with Oracle to get some solution other than following you :-)
    Regards
    Ravijeet

  • How to populate/persist right-side of Shuttle in apex 3.1.2 after submit

    In the new Shuttle I can only specify one LOV (select empname, empid from emp where empid not in (1,3,4)) but I also want to populate the right-side of the shuttle to show values which the non-members (select empname, empid from emp where empid in (2,5)) so that the user can make selections which persist after submit.

    Rashid,
    The method that worked for me was to:
    1) Create the LOV to populate the Left side of the shuttle (unselected).
    2) Define the Source property to populate the Right side (selected). In my case, I used a PL/SQL Function Body type, but any would work.
    I set the Source Used to Always, so that my user always started with the same default selection, but if you set it to "Only set when session value is null", that should do what you're asking for.
    Good luck (and thanks for the points by marking my answer helpful or correct),
    Stew

  • How to find intersection point between a lineseries and a vertical line.

    I have a lineseries chart (refer the screenshot). As I move the spend slider shown in the attachment, a vertical line is drawn in the chart. (I did this using the cartesian canvas as annotation element - using canvas.moveTo(), canvas.lineTo() functions)
    I want to find out the intersection point(y value) where the vertical line meets the lineseries. Can someone help me on this. It will be really helpful.
    Thanks,
    Jayakrishnan

    Here are a few functions I wrote years ago for common chart transformations... the function you're going to focus on for your solution is chartToScreen...
    *  Converts the screen position to chart value position
    *  @param thePos - Number - The position you want to convert
    *  @private
            private function getChartCoordinates(thePos:Point):Object
                   var tmpArray:Array = dataTransform.invertTransform(thePos.x, thePos.y);
                   return {x:tmpArray[0], y:tmpArray[1]};
    *  Takes a non-numeric chart value and returns a proper numeric value
    *  @param inValue - String - The display name of the instance showing on the axis (eg. if we're showing months, it might be 'Sep - 06'
    *  @param theAxis - IAxis - The axis on which we're looking
              public function getNumericChartValue(inValue:String, theAxis:IAxis):Object
                   var axisCache:Array = new Array({inValue: inValue})                 
                   if(!(theAxis is LinearAxis))
                        theAxis.mapCache(axisCache, "inValue", "outValue", true);
                        return {numericValue: axisCache[0].outValue}
                   else
                        return {numericValue: Number(inValue)};
    *  Converts the chart values into screen coordinate values
    *  @param chartX - Number - The display name of the instance showing on the axis (eg. if we're showing months, it might be 'Sep - 06'
    *  @param chartY - Number - The axis on which we're looking
              public function chartToScreen(chartX:Number, chartY:Number, theSeries:Series):Point
                   var tmpCache:Array = new Array({chartX:chartX, chartY:chartY});
                   if(theSeries)
                        theSeries.dataTransform.transformCache(tmpCache, "chartX", "screenX", "chartY", "screenY");
                   else
                        dataTransform.transformCache(tmpCache, "chartX", "screenX", "chartY", "screenY");
                   return new Point(Math.round(tmpCache[0].screenX), Math.round(tmpCache[0].screenY));
    *  takes a point in mouse position, and runs it through converting to chart coordinates, converts chart coordinate to numeric value if needed
    *  and then back into mouse position to get the nearest axis snap point
    *  @param thePoint - Point - The position we're converting
    *  @private
              private function getSnapPosition(thePoint:Point):Point
                   var chartPoint:Object = getChartCoordinates(new Point(thePoint.x, thePoint.y));
                   //if either of the axis chart results is not in numeric format, we get the numeric equivalent of it
                   var chartX:* = chartPoint.x;
                   var chartY:* = chartPoint.y;
                   chartX = getNumericChartValue(chartPoint.x, CartesianChart(this.chart).horizontalAxis).numericValue;
                   chartY = getNumericChartValue(chartPoint.y, CartesianChart(this.chart).verticalAxis).numericValue;
                   return chartToScreen(chartX, chartY, null);

  • Shuttle and AJaX

    Hello all,
    I have an interesting issue to do with population of a shuttle in 3.1 using AJaX. The session state of selected items is what's causing me dramas, details as follows:
    The left side of the shuttle is populated according to a series of cascading select lists with an optional 'filter' checkbox on each. So every time the value of a select is changed or a checkbox checked/unchecked the ajax process is fired to repopulate the list accordingly.
    My Javascript is:
    function get_ITEMS(){
    var l_Count = 0
    var l_Return = null;
    var l_Select = $x('P2_ITEMS_LEFT');
    var get = new htmldb_Get(null,$v('pFlowId'),
    'APPLICATION_PROCESS=BUILD_ITEMS_SEL',0);
    get.addParam('x01',$v('P2_PRODFILTER'));
    get.addParam('x02',$v('P2_WORKFILTER'));
    get.addParam('x03',$v('P2_COREFILTER'));
    get.addParam('x04',$v('P2_PRODUCT'));
    get.addParam('x05',$v('P2_WORK_TYPE'));
    get.addParam('x06',$v('P2_CORESYSTEM'));
    get.addParam('x07',$v('P2_DISCIPLINE'));
    gReturn = get.get('XML');
    if(gReturn && l_Select){
    l_Count = gReturn.getElementsByTagName("option").length;
    l_Select.length = 0;
    for(var k=0;k<l_Count;k++){
    var l_Opt_Xml = gReturn.getElementsByTagName("option")[k];
    appendToSelect(l_Select, l_Opt_Xml.getAttribute('value'),
    l_Opt_Xml.firstChild.nodeValue)
    get = null;
    and the application level process BUILD_ITEMS_SEL is:
    DECLARE
    v_doprod varchar2(3);
    v_dowork varchar2(3);
    v_docore varchar2(3);
    v_prod varchar2(30);
    v_work varchar2(30);
    v_core varchar2(30);
    v_disc varchar2(30);
    BEGIN
    v_doprod := wwv_flow.g_x01;
    v_dowork := wwv_flow.g_x02;
    v_docore := wwv_flow.g_x03;
    v_prod := wwv_flow.g_x04;
    v_work := wwv_flow.g_x05;
    v_core := wwv_flow.g_x06;
    v_disc := wwv_flow.g_x07;
    owa_util.mime_header('text/xml', FALSE );
    htp.p('Cache-Control: no-cache');
    htp.p('Pragma: no-cache');
    owa_util.http_header_close;
    htp.prn('<select>');
    FOR rec IN (
    SELECT distinct(item) as "ITEM"
    FROM TBL_ROVE_GRADINGS
    WHERE bus_unit = :P2_BUSUNIT
    AND discipline = v_disc
    AND ((product = v_prod or product = 'all') or v_doprod = 'No')
    AND ((work_required = v_work or work_required = 'all') or v_dowork = 'No')
    AND ((core_system like '%'||v_core||'%' or core_system = 'all') or v_docore = 'No')
    order by item asc
    LOOP
    htp.prn('<option value="' || rec."ITEM"|| '">' || rec."ITEM"|| '</option>');
    END LOOP;
    htp.prn('</select>');
    END;
    This all works perfectly well. I can change my cascading selects, select items, refilter and select other items, the AJaX does its lovely stuff and I've got beautiful process flow. I can have the right-hand side populated from multiple different left-hand lists according to filtering choices.
    The problem is when I need to have the selected items remembered in session state. If I navigate away and then return my left-side has retained its session state (it's rebuilt onload from the currently selected cascading select values) but the right-hand side is blank.
    I've got a nasty suspicion that the core of the issue is because the left side may no longer have the values that the right-side session state is looking for to mark as 'selected'.
    Essentially, what I need is a solution that will 'force' the right-side to have the values previously selected for various filtered choices in the left.
    Any thoughts?
    Thanks :D

    Hello Frank,
    >> If I navigate away and then return my left-side has retained its session state
    I’m assuming that “navigate away” means redirecting from the page (without submitting it). In this case, the session state of the page is not saved, and none of the AJAX components you are using save it either, so you are left with a session state that represent page loading time.
    The addParam() method doesn’t save state. You should use the add() method, which do set session state. For example
    get.add(' P2_PRODFILTER',$v('P2_PRODFILTER'));This will save the session state for all your select lists. Of course, you will have to change the on-demand process accordingly.
    The second thing is to handle the shuttle value. You need to remember that for the APEX engine, a shuttle value is a colon-delimited string. You should generate this value in your on-demand process, and use the APEX_UTIL.SET_SESSION_STATE procedure to save it into session state. If you anticipate that this value will include options that don’t exist on your shuttle left side (left is relative, so let’s say your source column) you should set the LOV option of “Display Extra Values” to Yes.
    Regards,
    Arie.
    &diams; Please remember to mark appropriate posts as correct/helpful. For the long run, it will benefit us all.
    &diams; Author of Oracle Application Express 3.2 – The Essentials and More

Maybe you are looking for