Alpha Video Training
Results 1 to 4 of 4

Thread: Passing Variables - tbiObjTemp.add - Close Grid and Open an A5W

  1. #1
    Member
    Real Name
    Ted Thomas
    Join Date
    Oct 2011
    Location
    Colorado
    Posts
    36

    Default Passing Variables - tbiObjTemp.add - Close Grid and Open an A5W

    I have a grid that I use to insert new customers. When the user "submits" the grid, I use server side events get the primary key and insert records into multiple tables. I use the caninsertrecord event to determine the next job number. Then I use onAfterSQLCommandExecute to insert records into multiple tables based on the job_number created in the caninsertrecord. This all works great.

    From their I want to use clent-side events to close the grid and open another one. The problem I have is getting the job number created in the server side to the client side. On the client side, I am using the event afterGridSubmit. The following java code works if I manually set the vars to the jobid I want to open.

    Code:
    if(e.hasErrors == false) {
    
    var rowNum = {Grid.Object}._selectedRow;
    
    window['jobid'] = {grid.object}._getValue('G','JOB_ID',rowNum);
    window['companyid'] = {grid.object}._getValue('G','COMPANY_ID',rowNum);
    window['lastname'] = {grid.object}._getValue('G','OWNER_LAST_NAME',rowNum);
    
    //alert(window['jobid']+' '+ window['companyId']+' - '+window['lastName']);
    
    {grid.object}.closeParentContainer();
    
    var tbiObjTemp = getTabbedUI();	
    var jobId = '';
    var companyId = '';
    var lastName = '';
     
    jobid = window['jobid'];
    companyid = window['companyid'];
    lastname = window['lastname'];
    
    var paneName = 'PANE_' + Date.parse(new Date().toString());
    var paneTitle = ''+jobid+'-'+lastname+'';
    var url = 'Job_00_tabs_new.a5w?job_00_tab_argument_N_company_id='+companyid+'&job_00_tab_argument_N_job_id='+jobid+'';
    tbiObjTemp.add({title: paneTitle , name : paneName, type:'url', url: url }); 
    }
    How can I pass the jobid created in the caninsert to the client side so I can open the a5w page?

  2. #2
    Member nlights's Avatar
    Real Name
    pertti karjalainen
    Join Date
    May 2011
    Location
    California
    Posts
    217

    Default Re: Passing Variables - tbiObjTemp.add - Close Grid and Open an A5W

    I sure hope someone from Alpha Software will hop on and answer this question. There are two videos, one for passing data in session variables (http://www.ajaxvideotutorials.com/V1...omponent_1.swf), and another one for passing data attached to the window object (like you are doing) (http://www.ajaxvideotutorials.com/V1...dToAnother.swf)

    The session object solution is quite elegant, EXCEPT that browser cache appears to be holding onto the first variable passed to the child table so long that subsequent changed session variables don't have any effect on the client side (IOW the client reads the first value of the variable, not the changed value.)

    The other video, passing data attached to the browser window object shows how you can DISPLAY the passed data using Javascript, but not how you can retrieve it with xBasic. The window object method is great because those variables don't get cached, but there is a disconnect between getting the value in JS and using it in xBasic. I've been racking my brain with this for the last 24 hours, posted a few questions about it, but so far no response.

  3. #3
    Member
    Real Name
    Ted Thomas
    Join Date
    Oct 2011
    Location
    Colorado
    Posts
    36

    Default Re: Passing Variables - tbiObjTemp.add - Close Grid and Open an A5W

    Thanks for your responce. I had watched those videos and many others as well as forum posts. Nothing pointed me in the correct direction.

    However, I solved the problem this morning by using the server side event AfterInsertRecord and sending Javascript back to the browers.

    Code:
    function AfterInsertRecord as v (e as p)
    dim txt as c
    
    txt = "window['x_jobid'] = " + convert_type(e.dataSubmitted.job_id, "c") +"; window['x_companyid'] = " + convert_type(e.dataSubmitted.company_id,"c") + ";window['x_lastname'] = '" + alltrim(e.DataSubmitted.owner_last_name) +"';"
    
    	aa = e.rtc.A_AjaxResponses
    	aa[].text = txt
    	aa[..].id = 100  'the order in which AjaxResponses are sent to the browser
    
    end function
    PLEASE note that I changed the window['VARIABLE NAME'] to 'x_name' in the CODE for the client side afterGridSubmit in my initial post because of conflict between the var definition and window[].

    Hope this helps everyone.

  4. #4
    Member nlights's Avatar
    Real Name
    pertti karjalainen
    Join Date
    May 2011
    Location
    California
    Posts
    217

    Default Re: Passing Variables - tbiObjTemp.add - Close Grid and Open an A5W

    That's great, Ted. I wrote a post earlier today about getting the same type of thing done without having to insert anything in order to trigger the variable passing. But the same idea, ie. using the additional js-to-Xbasic "data cargo" capability of ajax callback.

Similar Threads

  1. Passing variable through URL to open a specific grid in a5w page
    By dfricke10 in forum Application Server Version 11 - Web/Browser Applications
    Replies: 7
    Last Post: 12-12-2011, 04:29 PM
  2. Passing a var between a grid and a a5w page in a div
    By MichaelCarroll in forum Application Server Version 10 - Web/Browser Applications
    Replies: 4
    Last Post: 03-11-2011, 11:49 AM
  3. Passing POST variables into A5W pages
    By Howard G. Cornett in forum Web Application Server v7
    Replies: 3
    Last Post: 09-19-2006, 02:38 PM
  4. passing variables into A5W pages
    By neil_albala in forum Web Application Server v7
    Replies: 4
    Last Post: 11-10-2005, 04:49 PM
  5. Passing Variables from A5W to a Grid
    By seidel1 in forum Web Application Server v6
    Replies: 3
    Last Post: 02-04-2005, 09:23 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •