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

Defaulting Search Values - Server Side Solution?

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

    Defaulting Search Values - Server Side Solution?

    Hi all,
    I am aware I can default / set variables in the client-side search events e.g. OnSearchRender.
    However,I am trying to set these values server-side. Is anyone aware of a method to do this in OnGridExecute or another Server-Side event?

    Essentially what I am trying to accomplish:
    When a user searches the grid "save" this search in session
    When the grid loads - I use OnGridExecute to apply a filter based on the "saved" search

    This works fine - except that the search form does not have its values set. Unfortunately the form controls do not have an initial value property.
    Is there a way to programmatically set this in a server-side event?

    Any input is greatly appreciated - Thanks All!
    Scott Moniz - Computer Programmer/Analyst
    REA Inc.
    http://reainc.net
    (416)-533-3777
    [email protected]

    REA INC offers consulting services, programming services, systems design, database design, third party payment gateway integration (CHASE, PAYPAL, AUTHORIZE.NET) and developer support.
    If you need custom code, or 1-to-1 mentoring in any facet of your database/web application design,
    contact us to discuss options.

    #2
    Re: Defaulting Search Values - Server Side Solution?

    Originally posted by aburningflame View Post
    Hi all,
    I am aware I can default / set variables in the client-side search events e.g. OnSearchRender.
    However,I am trying to set these values server-side. Is anyone aware of a method to do this in OnGridExecute or another Server-Side event?

    Essentially what I am trying to accomplish:
    When a user searches the grid "save" this search in session
    When the grid loads - I use OnGridExecute to apply a filter based on the "saved" search

    This works fine - except that the search form does not have its values set. Unfortunately the form controls do not have an initial value property.
    Is there a way to programmatically set this in a server-side event?

    Any input is greatly appreciated - Thanks All!
    Hi Scott,

    The search controls do have an Initial value property. In the Display Settings for a control in the Search Part, there is a "Initial value" property. Select one of your search controls in the Search Fields and use the "Search Properties" link to find the "Initial Value" setting. For a text box control, it will be sandwiched between the "Range Search" and "Keyword Search" properties. The initial value can be set to a session variable or page argument.

    You could put the values you want to populate the search part with in the e._state object and set the value of the search part in the client-side onSearchPartRender event:

    Code:
    'In the OnGridExecute event:
    e._state.State = "MA"
    Code:
    //In the client-side javascript onSearchRender event:
    var state = {Grid.Object}.stateInfo["State"];
    if (state) {
    	{grid.object}.setValue('S','STATE',state);
    }

    Alternatively, you could set the Initial_Value property for the search fields via the e.tmpl property in the OnGridExecute event. EG,

    Code:
    e.tmpl.searchfield_info[1].Initial_Value = "Germany"
    Use the "Xbasic" tab at the bottom of the Grid Builder to find the e.tmpl.searchfield_info[] that applies to each field in the search part. They're usually numbered starting at 1 and matching the order of the search fields.

    For example, suppose I have 3 search fields, City, State, and Country, in the search part in this order:
    City
    State
    Country
    I could set their initial value property is as follows in the OnGridExecute event:
    Code:
    ' Set Initial Value for City to "Boston"
    e.tmpl.searchfield_info[1].Initial_Value = "Boston"
    
    ' Set Initial Value for State to "MA"
    e.tmpl.searchfield_info[2].Initial_Value = "MA"
    
    ' Set Initial Value for Country to "USA"
    e.tmpl.searchfield_info[3].Initial_Value = "USA"
    I highly encourage you to search for "searchfield_info" and verify this is the case if you go this route. Hidden controls can change the numbering. Also note that if you ever re-order your search part, your Xbasic will need to be updated as well.

    However, I recommend using the e._state object over changing the values using tmpl as the e._state method is not susceptible to breakage if you reorder your search controls.

    Let me know what you end up doing.
    Sarah Mitchell
    Director of Customer Success | [URL="https://www.alphasoftware.com"]Alpha Software Corporation[/URL]
    [B]Get in the know! [/B] Join us for our Weekly Webinars: [URL="https://www.alphasoftware.com/weekly-transform-tuesday-webinar"]TransForm Tuesday[/URL] and [URL="https://www.alphasoftware.com/weekly-alpha-anywhere-overview-webinar"]Wednesday's Alpha Anywhere Demo and Q&A[/URL]
    Connect with us: [URL="https://www.instagram.com/alpha_software_corp/"]Instagram[/URL] | [URL="https://twitter.com/AlphaSoftware"]Twitter[/URL] | [URL="https://www.facebook.com/AlphaSoftware/"]Facebook[/URL] | [URL="https://www.linkedin.com/company/alpha-software"]LinkedIn[/URL] | [URL="https://www.youtube.com/user/AlphaSoftwareInc"]YouTube[/URL]

    Comment


      #3
      Re: Defaulting Search Values - Server Side Solution?

      Hi Sarah,
      Thanks for the response! Are you the smitchell user? :) I did end up figuring this one after a few hours out but did not have a chance to repost.
      I now see the initial value but I think I wanted a more generic/dynamic approach that will work for other grids as well without having to hardcode field names.
      This is working well on my first grid - as the search becomes more complex (e.g. mutiple choice dropdowns, checkboxes) I think the code will have to be modified but as a quick solution for a simple search this seems to work.

      Here was my approach:

      OnSearchPartFilterCompute:
      Code:
      evaluate_template("session."+e.tmpl.ComponentName+"_searchdata=e.SearchDataSubmitted") 'save search data to a session variable referenced by the component name - not sure how this will behave if you use a grid twice on the same page
      OnGridExecute:
      Code:
      'compute initial filter by looping through search field info definitions and seeing if a session.componentName_searchData.X session variable exists with this varname
      '(i might have to use .fieldname here not sure but at the moment they match and this works ok)
      e.tmpl.filter_initial=""
      for i=1 to e.tmpl.SearchField_Info.size()
      	if variable_exists("session."+e.tmpl.ComponentName+"_searchData."+e.tmpl.SearchField_Info[i].varname) then
      		dim filterVal as C=eval("session."+e.tmpl.ComponentName+"_searchData."+e.tmpl.SearchField_Info[i].varname)
      		if filterVal<>"" then
      			if e.tmpl.filter_initial<>"" then
      				e.tmpl.filter_initial=e.tmpl.filter_initial+" AND "
      			end if
      			e.tmpl.filter_initial=e.tmpl.filter_initial+e.tmpl.SearchField_Info[i].searchExpression+"='"+filterVal+"'"
      		end if
      	end if
      next
      
      
      'save to state info for client side set
      if variable_exists("session."+e.tmpl.ComponentName+"_searchData") then
      	e._state.custom_search_data = json_generate(eval("session."+e.tmpl.ComponentName+"_searchData"))
      else
      	e._state.custom_search_data = ""
      end if

      That is all that is needed for the initial filtering, but the search wont have default values - and this is how I fixed that:
      ClientSide OnSearchRender:
      Code:
      if ({Grid.Object}.stateInfo.custom_search_data){
      	var custom_search_data=JSON.parse({Grid.Object}.stateInfo.custom_search_data);
      	for (var key in custom_search_data){
      		{grid.Object}.setValue('S',key,custom_search_data[key]);
      	}
      }
      Then ran into an issue when Clearing Search Criteria still remembers your last search, so I added this code
      AfterSearchCLear:
      Code:
      {grid.Object}.ajaxCallback('G','{Grid.RowNumber}:all','ClearCustomSearch','','',{});
      XBasic Functions:

      Code:
      function ClearCustomSearch as c (e as p)
      'cleanup session vars and state when clearing search so grid does not apply filter or default search values
      	evaluate_template("delete session."+e.tmpl.ComponentName+"_searchdata")
      	e._state.custom_search_data = ""
      end function
      Scott Moniz - Computer Programmer/Analyst
      REA Inc.
      http://reainc.net
      (416)-533-3777
      [email protected]

      REA INC offers consulting services, programming services, systems design, database design, third party payment gateway integration (CHASE, PAYPAL, AUTHORIZE.NET) and developer support.
      If you need custom code, or 1-to-1 mentoring in any facet of your database/web application design,
      contact us to discuss options.

      Comment


        #4
        Re: Defaulting Search Values - Server Side Solution?

        I like the approach of setting the searchFieldInfo.initial_value in the OnGridExecute as this may make the code a little nicer and would circumvent the need for the state info / onSearchRender logic.
        It may even assist with solving some of the other issues.

        I will try this on the next grid.
        Scott Moniz - Computer Programmer/Analyst
        REA Inc.
        http://reainc.net
        (416)-533-3777
        [email protected]

        REA INC offers consulting services, programming services, systems design, database design, third party payment gateway integration (CHASE, PAYPAL, AUTHORIZE.NET) and developer support.
        If you need custom code, or 1-to-1 mentoring in any facet of your database/web application design,
        contact us to discuss options.

        Comment

        Working...
        X