Alpha Software Mobile Development Tools:   Alpha Anywhere    |   Alpha TransForm subscribe to our YouTube Channel  Follow Us on LinkedIn  Follow Us on Twitter  Follow Us on Facebook

Announcement

Collapse

The Alpha Software Forum Participation Guidelines

The Alpha Software Forum is a free forum created for Alpha Software Developer Community to ask for help, exchange ideas, and share solutions. Alpha Software strives to create an environment where all members of the community can feel safe to participate. In order to ensure the Alpha Software Forum is a place where all feel welcome, forum participants are expected to behave as follows:
  • Be professional in your conduct
  • Be kind to others
  • Be constructive when giving feedback
  • Be open to new ideas and suggestions
  • Stay on topic


Be sure all comments and threads you post are respectful. Posts that contain any of the following content will be considered a violation of your agreement as a member of the Alpha Software Forum Community and will be moderated:
  • Spam.
  • Vulgar language.
  • Quotes from private conversations without permission, including pricing and other sales related discussions.
  • Personal attacks, insults, or subtle put-downs.
  • Harassment, bullying, threatening, mocking, shaming, or deriding anyone.
  • Sexist, racist, homophobic, transphobic, ableist, or otherwise discriminatory jokes and language.
  • Sexually explicit or violent material, links, or language.
  • Pirated, hacked, or copyright-infringing material.
  • Encouraging of others to engage in the above behaviors.


If a thread or post is found to contain any of the content outlined above, a moderator may choose to take one of the following actions:
  • Remove the Post or Thread - the content is removed from the forum.
  • Place the User in Moderation - all posts and new threads must be approved by a moderator before they are posted.
  • Temporarily Ban the User - user is banned from forum for a period of time.
  • Permanently Ban the User - user is permanently banned from the forum.


Moderators may also rename posts and threads if they are too generic or do not property reflect the content.

Moderators may move threads if they have been posted in the incorrect forum.

Threads/Posts questioning specific moderator decisions or actions (such as "why was a user banned?") are not allowed and will be removed.

The owners of Alpha Software Corporation (Forum Owner) reserve the right to remove, edit, move, or close any thread for any reason; or ban any forum member without notice, reason, or explanation.

Community members are encouraged to click the "Report Post" icon in the lower left of a given post if they feel the post is in violation of the rules. This will alert the Moderators to take a look.

Alpha Software Corporation may amend the guidelines from time to time and may also vary the procedures it sets out where appropriate in a particular case. Your agreement to comply with the guidelines will be deemed agreement to any changes to it.



Bonus TIPS for Successful Posting

Try a Search First
It is highly recommended that a Search be done on your topic before posting, as many questions have been answered in prior posts. As with any search engine, the shorter the search term, the more "hits" will be returned, but the more specific the search term is, the greater the relevance of those "hits". Searching for "table" might well return every message on the board while "tablesum" would greatly restrict the number of messages returned.

When you do post
First, make sure you are posting your question in the correct forum. For example, if you post an issue regarding Desktop applications on the Mobile & Browser Applications board , not only will your question not be seen by the appropriate audience, it may also be removed or relocated.

The more detail you provide about your problem or question, the more likely someone is to understand your request and be able to help. A sample database with a minimum of records (and its support files, zipped together) will make it much easier to diagnose issues with your application. Screen shots of error messages are especially helpful.

When explaining how to reproduce your problem, please be as detailed as possible. Describe every step, click-by-click and keypress-by-keypress. Otherwise when others try to duplicate your problem, they may do something slightly different and end up with different results.

A note about attachments
You may only attach one file to each message. Attachment file size is limited to 2MB. If you need to include several files, you may do so by zipping them into a single archive.

If you forgot to attach your files to your post, please do NOT create a new thread. Instead, reply to your original message and attach the file there.

When attaching screen shots, it is best to attach an image file (.BMP, .JPG, .GIF, .PNG, etc.) or a zip file of several images, as opposed to a Word document containing the screen shots. Because Word documents are prone to viruses, many message board users will not open your Word file, therefore limiting their ability to help you.

Similarly, if you are uploading a zipped archive, you should simply create a .ZIP file and not a self-extracting .EXE as many users will not run your EXE file.
See more
See less

Generate a value in first OnGridExecute and re-use it in future callbacks. Session variable no good as 2+ tabs can be open.

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Generate a value in first OnGridExecute and re-use it in future callbacks. Session variable no good as 2+ tabs can be open.

    Hi all,

    I'm using a session variable to filter grids throughout the application; this variable can be set from a drop-down menu at the top of almost any page in the application. In the OnGridExecute event I am checking the session variable and, based on this, modifying the value of e.rv.tmpl.CS.SQL to get the dataset I need. This works fine most of the time but if a user opens two tabs and changes the session variable in the second, returning to the first and (for example) searching the grid or changing it's page will cause OnGridExecute to change the grid's dataset; once a page has been loaded I want it to keep using the filter it started with.

    I first tried storing values for re-use in the e and rtc objects, but these were not preserved between callbacks. I then tried using e._state and found this wiki page which explained why my method wasn't working and appeared to present a solution; however, it doesn't seem possible to cause an AJAX response from OnGridExecute using the method described (can anyone confirm this? I couldn't get a simple JavaScript alert to be returned).

    I'm now feeling a bit stuck on this, so any help would be greatly appreciated. Preferably I'm looking for a solution which only requires I make changes in OnGridExecute as I will need to update a large number of pages once a solution is found, ultimately though I just need a way of preserving a variable between callbacks from the same page.

    Thanks for reading,
    dorobe

    #2
    Re: Generate a value in first OnGridExecute and re-use it in future callbacks. Session variable no good as 2+ tabs can be ope

    Hi dorobe,
    As long as we are talking about two different grids on two tabs you make specific session variables for each.

    Grid A uses SESSION.VALUE1 = statement
    Grid B uses SESSION.VALUE2 = statement
    Rapid Development, Training, Support
    http://data2web.network
    903-740-2549

    Comment


      #3
      Re: Generate a value in first OnGridExecute and re-use it in future callbacks. Session variable no good as 2+ tabs can be ope

      Hi Michael - and thanks for taking the time to respond to my post.

      Unfortunately this wont work for me as the user can have the same grid open in multiple tabs (and I should say here that by tabs I mean browser tabs, not tabs in an Alpha Grid; I wasn't aware these existed when I first posted). When the user makes a selection from the drop-down box on any page a session variable is set so that all grids then opened (on a new tab or by refreshing the page) will display data relevant to their selection then the browser tab that the user made the selection on refreshes. Any other open tabs however will not be refreshed and so continue to display data relevant to the previous selection (this is desired behaviour) but any grid in these tabs that makes an ajax callback will then switch over to displaying data relevant to the new selection (not desired behaviour).

      If I could set a variable local to the browser tab from the OnGridExecute event the first time it runs and then refer to that in subsequent callbacks it would be perfect, but I can't find a way to preserve a variable between callbacks or include my own JavaScript instructions in the Grid's ajax response. I'm sure the functionality I'm looking for must exist within Alpha but I'm really struggling to find it.

      Any ideas?

      Thanks again for getting back to me,
      dorobe

      Comment


        #4
        Re: Generate a value in first OnGridExecute and re-use it in future callbacks. Session variable no good as 2+ tabs can be ope

        Perhaps you can refresh the grid on a pulldown selection. I'm thinking OnChange. That way the grid gets refreshed each time a new selection is made.
        Rapid Development, Training, Support
        http://data2web.network
        903-740-2549

        Comment


          #5
          Re: Generate a value in first OnGridExecute and re-use it in future callbacks. Session variable no good as 2+ tabs can be ope

          Recheck that wiki page that you posted (in your first post) again - steps 1 and 2 are useful.

          In your OnGridExecute (serverside) event, maybe you could check eval_valid("Request.Variables.__si2.myvar1") to see if your chosen variable exists.
          If it does, then use it. If it doesn't, then use the session variable's value.

          Then use the afterAjaxCallback clientside function to set a stateInfo grid variable ONLY if it doesn't exist.
          var si = {grid.object}.stateInfo;
          si.myvar1 = 'new value for myvar1';

          I haven't tried it, but it seems like a reasonable enough approach.

          Andy.

          Comment


            #6
            Re: Generate a value in first OnGridExecute and re-use it in future callbacks. Session variable no good as 2+ tabs can be ope

            Thanks both of you for your replies - this is really helpful stuff.

            mvaughn - I'm currently refreshing the whole page when the drop down is used but other open browser tabs don't refresh (and I don't want them to as the user should be able to see two selections side by side if they want to). The pages have the current selection included in the html by Alpha so it is clear to the user which selection was in use when the page was loaded, however since the ajax callbacks are currently using the session variable they can go out of sync with the static part of the page.

            agillbb - I think you're on to something here, and it looks like maybe I'm over-complicating things by trying to do everything from OnGridExecute. My time on this project is pretty slim at the moment as a higher priority job has come in but hopefully there will be an opportunity to test this out tomorrow. I'm going to try using one of the early clientside events (the ones that fire when the grid first loads) to set that variable right away as (I believe) session variable values are accessible to the JavaScript on clientside. I'll post back what I did if it works for future readers.

            Thanks again,
            dorobe

            Comment


              #7
              Re: Generate a value in first OnGridExecute and re-use it in future callbacks. Session variable no good as 2+ tabs can be ope

              Ok - I didn't get the to try this again until today but good news - it's working!

              My thanks to both of you. :)


              In case anyone comes across this page later with a similar problem, here's what I had to do:
              - Publish Session variables for the grid (explained here for dialogs, but it works the same way)
              - Use the code Andy suggested above where "new value for myvar1" is replaced with {grid.object}._vars.SESSION.VARIABLE_NAME_IN_CAPS
              - I put the client side code in onGridInitializeComplete instead of afterAjaxCallback so that it only runs once (I was hoping to use an event which fires before OnGridExecute but the session variable doesn't appear to become available on client-side before then)
              - In OnGridExecute I check if either the Request or Session variable exists (prioritising the Request variable) and if so use that value in the WHERE clause of e.tmpl.CS.SQL (first converting to numeric and back with STR() and VAL() if using the Request variable to protect against SQL Injection). If neither exists I use SELECT TOP 0 * FROM table WHERE 1 = 0 in my SQL to ensure nothing is returned.

              It was that simple all along!

              Thanks again,
              dorobe

              Comment

              Working...
              X