Alpha Video Training
Results 1 to 4 of 4

Thread: Sprucing up the Grid Alphabet Button Search

  1. #1
    "Certified" Alphaholic
    Real Name
    David Kates
    Join Date
    Apr 2008
    Location
    Unionville, ON
    Posts
    7,724

    Default Sprucing up the Grid Alphabet Button Search

    I was demoing the Grid's Alphabet button search and thought I'd try to disable those Alphabet buttons that would produce no records in a search. This code will do this and you can change the style of the button.

    There's probably better events to use than I did, but I just wanted to know if it were easily possible... and kinda just get it done. I'm searching against is a SQL Server Join statement of two tables just a bit over 11,000 records.
    I've read about better methods for searches against large record numbers, but this will do for now. There isn't any error checking in the Xbasic yet.

    First, in your Grid, in the Server-side event, OnAfterExistingRowRender: Here we're going after the sql tables and returning DISTINCT LEFT(fieldname,1)... so... should be a maximum of 1 row for each letter of the Alphabet plus numbers After we get the results, turn the resultset into a CRLF string with ToString, and then turn the CRLF string into a comma delimited string. Finally return the string to Javascript in a global variable. This is actually the reason I used this event... because I can return Javascript and therefore create the Javascript variable.

    Code:
    dim cn as sql::Connection
    dim args as sql::Arguments
    dim rs as sql::ResultSet
    dim currUser as C
    
    sql = "SELECT DISTINCT LEFT(Customers.CompanyName,1) as alphaCmpyName FROM WorkOrders WorkOrders INNER JOIN Customers Customers ON  WorkOrders.CustomerId = Customers.CustomerID ORDER BY alphaCmpyName"
    
    cn.open("::name::your_connection_name_goes_here")
    cn.PortableSQLEnabled = .t.
    
    dim cmpyLetters as c = ""
    
    cn.Execute(sql)
    rs = cn.ResultSet
    cmpyLetters = crlf_to_comma(rs.ToString())
    
    cn.FreeResult()
    cn.close()
    
    e.javascript = "searchLetters = '" + cmpyLetters + "';"

    Next, in the Client-side event, onGridRenderComplete: Here we're grabbing the Alphabetbuttons DIV, and then grabbing all the specific buttons themselves, under the DIV. Next... since we have our "searchLetters" variable containing all our valid search Letters, compare each of the Alphabetbutton letters to our valid search Letters. If there's a hit, turn the letter Green. No hit... disable it and turn it red.

    Code:
    //The variable 'searchLetters' comes from the Server-side event OnAfterExistingRowsRender
    var myDiv = document.getElementById( "{grid.componentname}.GRID_PART.ALPHABETBUTTONS" );
    var inputArr = myDiv.getElementsByTagName( "button" );
    for (var i = 0; i < inputArr.length; i++)
    	{
    	var str=searchLetters;
    	var n=str.search(inputArr[i].innerHTML);
    	if (n == -1)
    		{
    		$(inputArr[i]).disabled = true;
    		$(inputArr[i]).style.color = 'red';
    		}
    	else
    		{
    		$(inputArr[i]).style.color = 'green';		
    		}
    	}
    And Finally... take the exact same Javascript code above and put it into the Client-side event afterAlphabetButtonSearch because after your search everything goes back to it's original state.

    That's it. I just love this stuff... what can't you do in Alpha 5!

  2. #2
    "Certified" Alphaholic
    Real Name
    Frank Bicknell
    Join Date
    Feb 2010
    Location
    39.1915° N, 84.4348° W
    Posts
    2,467

    Default Re: Sprucing up the Grid Alphabet Button Search

    Hi David,

    Thank you for sharing this and thank you for all of the help you have provided to me over the years allowing me to say this too.

    That's it. I just love this stuff... what can't you do in Alpha 5!
    Win 10 64 Development, Win 7 64 WAS 11-1, 2, Win 10 64 AA-1,2, MySql, dbForge Studio The Best MySQL GUI Tool IMHO. http://www.devart.com/dbforge/mysql/studio/

  3. #3
    "Certified" Alphaholic
    Real Name
    Frank Bicknell
    Join Date
    Feb 2010
    Location
    39.1915° N, 84.4348° W
    Posts
    2,467

    Default Re: Sprucing up the Grid Alphabet Button Search

    I made a little modification to include the All button.
    Code:
    dim cn as sql::Connection
    dim args as sql::Arguments
    dim rs as sql::ResultSet
    dim currUser as C
    
    sql = "SELECT DISTINCT LEFT(Customers.CompanyName,1) as alphaCmpyName FROM WorkOrders WorkOrders INNER JOIN Customers Customers ON  WorkOrders.CustomerId = Customers.CustomerID ORDER BY alphaCmpyName"
    
    cn.open("::name::your_connection_name_goes_here")
    cn.PortableSQLEnabled = .t.
    
    dim cmpyLetters as c = ""
    
    cn.Execute(sql)
    rs = cn.ResultSet
    cmpyLetters = crlf_to_comma(rs.ToString())
    cmpyLetters = cmpyLetters  + ",All"
    cn.FreeResult()
    cn.close()
    
    e.javascript = "searchLetters = '" + cmpyLetters + "';"
    I have also found that if you have a search part you have to make an additional mod. I found that putting the client side code in the AfterAjaxCallbackComplete client side event that everything works OK and I have had no issues.
    Last edited by frankbicknell; 03-04-2013 at 11:47 AM.
    Win 10 64 Development, Win 7 64 WAS 11-1, 2, Win 10 64 AA-1,2, MySql, dbForge Studio The Best MySQL GUI Tool IMHO. http://www.devart.com/dbforge/mysql/studio/

  4. #4
    "Certified" Alphaholic
    Real Name
    David Kates
    Join Date
    Apr 2008
    Location
    Unionville, ON
    Posts
    7,724

    Default Re: Sprucing up the Grid Alphabet Button Search

    Excellent... thanks Frank. I have a search part, but I hadn't tested it yet... I was wondering how much the two would affect each other. Thanks for the "All" too... I guess we need that :)

Similar Threads

  1. Sparse Alphabet Button available in Grid ?
    By harrison4411 in forum Application Server Version 11 - Web/Browser Applications
    Replies: 11
    Last Post: 03-03-2013, 11:48 PM
  2. Alphabet Buttons Search Supercontrol - Odd Behavior
    By jkwrpc in forum Alpha Five Version 10 - Desktop Applications
    Replies: 8
    Last Post: 09-15-2012, 06:34 AM
  3. Alphabet Button vs Search by Name - force either/or
    By WendyWelton in forum Application Server Version 10 - Web/Browser Applications
    Replies: 6
    Last Post: 02-23-2012, 03:49 PM
  4. Issues with both Supercontrol Alphabet Buttons Search and Multi-State Button
    By davej in forum Alpha Five Version 10 - Desktop Applications
    Replies: 2
    Last Post: 06-24-2011, 03:32 PM
  5. Alphabet search bar / browse
    By J.R. Noe in forum Alpha Five Version 10 - Desktop Applications
    Replies: 14
    Last Post: 04-21-2011, 07:02 PM

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
  •