The fastest easiest way to get it right.

Responding to Grid Mouseclicks

You may want to have a grid displayed with data in it, and then perform some action when the user clicks on a row. This can be done with Javascript and by using Andromeda's event dispatcher system.

It works like this. When a user clicks on a row in a grid, an event is sent to the Andromeda event dispatcher. If you have an object that responds to that event then you can do anything you want when the user clicks on a row.

We will start out with our example of a song playlist:

<?php
class x6example extends androX6 {
    function x6main() {
        # Always begin with this:
        $top = html('div');
        $top->addClass('fadein');
        
        #  ...other html is added here...
        #
    
        # Now for the grid create command.  The parameters are:
        # 1) Height
        # 2) Table we are editing
        # 3) Flag for lookup textboxes, no in this case
        # 4) Flag for sortable.  No
        # 5) Flag for buttonbar, No, not editable
        # 6) Flag for editable, no
        $grid = $top->addGrid(hSize(300),'states','N','N','N','N');
        
        # Now add a single column, take it from the
        # data dictinoary, that is always easiest
        $dd = ddTable('songs');
        $grid->addColumn($dd['flat']['songname']);
        $grid->lastColumn();
        
        # Now pull the data and add it.  Note that we
        # pull the 'skey' column so the grid has a
        # unique ID for each row.
        $view = ddtable('songs');
        $sq="select skey,songname from $view";
        $rows = SQL_AllRows($sq);
        $grid->addData($rows);
        
        # Create an invisible div object, we will see 
        # what to do with this below
        $listener = $top->h('div');
        $listener->hp['id'] = 'song_listener';
        $listener->hp['style'] = 'display: none';
        
        
        # ...and this is always at the end
        $top->render();
    }
}

The Event

When the user clicks on a row, the grid will fire an event with the name "reqEditRow_songs". This event is named "reqEditRow_" plus the name of the table that the grid is displaying. The event fires with a parameter, which is the skey value of the row.

To respond to this event, we will send up an object to the page that is listening for it. To do this, we put a method into our "x6example" class called x6script(). Anything we put into the x6script() routine will be executed when the document has loaded.

<?php
class x6example extends androX6 {
    function x6main() {
        #
        # This code skipped for brevity, paste in the
        # code from the above example.
        #
    }
    
    function x6script() {
        ?>
        
        <?php
    }
}
?>
    

User Comments

There are no user comments yet on this page.


Add A Comment

Comments will not appear until after they are moderated. Comments are usually moderated within a few hours on weekdays, but may take longer on weekends and holidays.

Name or nickname: (This will appear with your comment)


Email (this will never be displayed)


Enter your comment here. Use [b] and [/b] for bold, [i] and [/i] for italic, and [pre] and [/pre] for code samples. All literal HTML and PHP that you enter will be escaped out and displayed as you enter it.


Home |  Documentation |  Download |  Credits |  Contact |  Login
Andromeda © Copyright 2004-2010, Licensed under the GPL Version 2