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

e.ajaxcallback = .f. code running on subsequent ajax callbacks.

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

    e.ajaxcallback = .f. code running on subsequent ajax callbacks.

    http://wiki.alphasoftware.com/~alpha...k+Property+V11

    Based on reading the document above I believe I should be able to wrap code in if e.ajaxcallbacks = .f. ... end if to have it only run the first time the grid is initialize yet it keeps running on every subsequent search. Maybe I'm misunderstanding the nature of this function.

    I have the following code in the OnGridExecuteEvent:

    Code:
    	if e.ajaxCallback = .f. then
    	    dim cCurrentYear as c = CYEAR(DATE())
    		dim cQueryDayMonth as c = "-01-01"
    		dim cShownFilterDayMonth as c = "01/01/"
    		e.tmpl.filter_initial = "p.EstSTADate > {" + cCurrentYear + cQueryDayMonth + "}"
    		e.rtc.initial_filter = cShownFilterDayMonth + cCurrentYear
    	end if
    This code initializes the grid with a specific search filter and then I use this text in the OnSUmmarySEctionRender function to emit the e.rtc.initial_filter to display this filter on the screen so the user knows that the grid has been set to the first of the year. The problem is if I clear the filters it still sets the year in e.rtc.initial_filter = "01/01/2015" in the OnSummarySectionRender event even though I have set it = "" at the end of OnSummarySectionREnder event. I'm not sure if this function keeps resetting it or if it's impossible to change the original instance of e.rtc.initial_filter from OnSummarySectionRender.

    Actually I realized while debugging that if i set e.rtc.initial_filter = "test" after the initial grid it changes within the function but it goes back to the initial value "01/01/2015" OnSummarySectionRender. It makes me think the e object rtc properties are static and final or something.

    Any ideas? here is the OnSummaryRender Code:

    Code:
    cHighlightedRows = getActiveFilter(session.SelectedFilter)
    e.javascript = "$('summary').innerHTML ='" + mySummarySectionHTML +"';"  + cHighlightedRows + \
    "$('current-filter').innerHTML = 'Current Filter(s): "+e.rtc.initial_filter +"';" + \
    "$('{grid.componentname}.S.STARTDATE').value = '"+e.rtc.initial_filter+"';" + \
    	"document.getElementById('StartDate').style.fontWeight = '900'; document.getElementById('StartDate').style.color = 'blue';"
    debug(1)
    e.javascript = e.javascript + "alert('test');"
    end function

    #2
    Re: e.ajaxcallback = .f. code running on subsequen ajax callbacks.

    Originally posted by jwilliamson View Post
    http://wiki.alphasoftware.com/~alpha...k+Property+V11

    Based on reading the document above I believe I should be able to wrap code in if e.ajaxcallbacks = .f. ... end if to have it only run the first time the grid is initialize yet it keeps running on every subsequent search. Maybe I'm misunderstanding the nature of this function.

    I have the following code in the OnGridExecuteEvent:

    Code:
    	if e.ajaxCallback = .f. then
    	    dim cCurrentYear as c = CYEAR(DATE())
    		dim cQueryDayMonth as c = "-01-01"
    		dim cShownFilterDayMonth as c = "01/01/"
    		e.tmpl.filter_initial = "p.EstSTADate > {" + cCurrentYear + cQueryDayMonth + "}"
    		e.rtc.initial_filter = cShownFilterDayMonth + cCurrentYear
    	end if
    This code initializes the grid with a specific search filter and then I use this text in the OnSUmmarySEctionRender function to emit the e.rtc.initial_filter to display this filter on the screen so the user knows that the grid has been set to the first of the year. The problem is if I clear the filters it still sets the year in e.rtc.initial_filter = "01/01/2015" in the OnSummarySectionRender event even though I have set it = "" at the end of OnSummarySectionREnder event. I'm not sure if this function keeps resetting it or if it's impossible to change the original instance of e.rtc.initial_filter from OnSummarySectionRender.

    Actually I realized while debugging that if i set e.rtc.initial_filter = "test" after the initial grid it changes within the function but it goes back to the initial value "01/01/2015" OnSummarySectionRender. It makes me think the e object rtc properties are static and final or something.

    Any ideas? here is the OnSummaryRender Code:

    Code:
    cHighlightedRows = getActiveFilter(session.SelectedFilter)
    e.javascript = "$('summary').innerHTML ='" + mySummarySectionHTML +"';"  + cHighlightedRows + \
    "$('current-filter').innerHTML = 'Current Filter(s): "+e.rtc.initial_filter +"';" + \
    "$('{grid.componentname}.S.STARTDATE').value = '"+e.rtc.initial_filter+"';" + \
    	"document.getElementById('StartDate').style.fontWeight = '900'; document.getElementById('StartDate').style.color = 'blue';"
    debug(1)
    e.javascript = e.javascript + "alert('test');"
    end function
    I took a look here and did some brief testing after simplifying your second code block. Based on what you've shared here, I don't see where you're updating e.rtc.initial_filter. I am also curious what this "getActiveFilter" function is.

    I deliberately added code in OnSummarySectionRender to set e.rtc.inital_filter to nothing and it didn't reset to the original value specified in onGridExecute. Note: I changed this to work with the Northwinds database of customers.

    onGridExecute:
    Code:
    if e.ajaxCallback = .f. then
    	dim cCurrentYear as c = "1996"
    	dim cQueryDayMonth as c = "-01-01"
    	dim cShownFilterDayMonth as c = "01/01/"
    	e.tmpl.filter_initial = "ShippedDate > {" + cCurrentYear + cQueryDayMonth + "}"
    	e.rtc.initial_filter = ">" + cShownFilterDayMonth + cCurrentYear
    end if
    onSummarySectionRender:
    Code:
    	dim js as c = "{grid.object}.setValue('S','SHIPPEDDATE','"+e.rtc.initial_filter+"',false);"
    	e.javascript = js + "alert('"+e.rtc.initial_filter+"');"
    
    	'Deliberately set e.rtc.inital_filter to nothing after first call to onSummarySectionRender
    	'If this is being reset by onGridExecute, then the alert should print the original initial filter
    	'calculated inside the if e.ajaxCallback = .f. then block
    	e.rtc.initial_filter = ""
    In my test, e.rtc.initial_filter was never set back to the original value. (And it was cleared after the first navigate to another page in the grid.)

    Where are you trying to change the e.rtc.initial_filter variable?
    Alpha Anywhere latest pre-release

    Comment


      #3
      Re: e.ajaxcallback = .f. code running on subsequen ajax callbacks.

      Thanks for your reply Sarah!
      The issue I'm having is that the code works properly in Working Preview but not when published locally; it's really odd.
      I updated the code a little because I want to keep the search form populated with the initial filter value of 01/01/2015 after submitting the form until the user decides to change it or remove it, because clients probably won't want to see projects from last year that often.

      When I run the grid in working preview if I don't change the StartDate in the search filter and submit the form it just keeps the value and keeps searching with the initial value like I want it. Then if I change the StartDate to todays date for example, all the records update and the value in the search form is the current date.

      When I publish the file locally it populates the search field with 01/01/2015 but if I change the value to 01/01/2014 and submit the form, then when the form is rendered again it goes back to 01/01/2015, but the records update going back to 01/01/2014.

      It's weird because if the section of xbasic code in the OnGridExecute that checks if an ajaxcallback had a occurred was executing the second time then the StartDate search filter would have overridden the user input and search would not have worked, but the search DOES work.I think there is an issue with the e.rtc.initial_filter value being final after it is set when published locally but not in working preview. Maybe there is a setting or something I have to change. Idk what is going on .

      Edit: So i added the alerts like you suggested and in working preview the first run through it alerts '01/01/2015' and the second time the alert is empty ("") but when published locally it just keeps displaying '01/01/2015'.
      Code:
      dim js as c = ""
      
      cHighlightedRows = getActiveFilter(session.SelectedFilter)
      'Check to see if an initial StartDate filter is set and if so insert the value in the search form, display the value
      'in the list of current filters, and highlight the filter header
      if e.rtc.initial_filter <> "" then
      	js = "$('{grid.componentname}.S.STARTDATE').value = '"+e.rtc.initial_filter+"';"
      	js = js + "$('current-filter').innerHTML = 'Current Filter(s): "+e.rtc.initial_filter +"';"
      	js = js + "document.getElementById('StartDate').style.fontWeight = '900'; document.getElementById('StartDate').style.color = 'blue';"
      end if
      e.javascript = js + "$('summary').innerHTML ='" + mySummarySectionHTML +"';"  + cHighlightedRows + "alert('"+e.rtc.initial_filter+"');"
      'Deliberately set e.rtc.inital_filter to nothing after first call to onSummarySectionRender
      'If this is being reset by onGridExecute, then the alert should print the original initial filter
      'calculated inside the if e.ajaxCallback = .f. then block
      e.rtc.initial_filter = ""
      Last edited by jwilliamson; 10-22-2015, 11:59 AM.

      Comment


        #4
        Re: e.ajaxcallback = .f. code running on subsequen ajax callbacks.

        So I got a work around from Alpha:

        Change the following code in the OnSummarySectionRender event from:

        [CODE]if e.rtc.initial_filter <> "" then[CODE]

        to
        Code:
        dim isAjax as l = .f.
        if variable_exists("request.variables.__Ajax") then
            if request.variables.__Ajax = "true" then
                isAjax = .t.
            end if
        end if
        if .not. isAjax then
        My final Code segment looks like this:
        Code:
        dim isAjax as l = .f.
        if variable_exists("request.variables.__Ajax") then
            if request.variables.__Ajax = "true" then
                isAjax = .t.
            end if
        end if
        if .not. isAjax then
        	js = "$('{grid.componentname}.S.STARTDATE').value = '"+e.rtc.initial_filter+"';"
        	js = js + "$('current-filter').innerHTML = 'Current Filter(s): "+e.rtc.initial_filter +"';"
        	js = js + "document.getElementById('StartDate').style.fontWeight = '900'; document.getElementById('StartDate').style.color = '#ff680a';"
        end if
        e.javascript = js + "$('summary').innerHTML ='" + mySummarySectionHTML +"';"  + cHighlightedRows
        ' + "alert('"+e.rtc.initial_filter+"');"
        'Deliberately set e.rtc.inital_filter to nothing after first call to onSummarySectionRender
        'If this is being reset by onGridExecute, then the alert should print the original initial filter
        'calculated inside the if e.ajaxCallback = .f. then block
        e.rtc.initial_filter = ""

        Comment

        Working...
        X