Rimokas
Rimokas

Reputation: 15

w2ui grid select line after delete

in w2ui grid I want to select grid line after I delete a line below. Here is mine javascript code :


   w2ui[ grd_obj.grid_id ].on( 'delete', function( event ) 
   {
      event.onComplete = function()
      { 
         var min_ind = 100000
         var sel = w2ui[ grd_obj.grid_id ].getSelection()
         for ( var r in sel )
         {
            var ind = w2ui[ grd_obj.grid_id ].get( sel[ r ].recid, true )
            min_ind = Math.min( ind, min_ind )
         }
         if ( event.phase == 'after' )
         {
            var ind = w2ui[ grd_obj.grid_id ].prevRow( min_ind )
            var rcd = w2ui[ grd_obj.grid_id ].records[ ind ]
            w2ui[ grd_obj.grid_id ].selectNone()
            w2ui[ grd_obj.grid_id ].select( { recid: rcd[ grd_obj.grid_table.grid_key ], column: 0 } )
         }
      }
   })

I can't find how to recatch "reload" after delete ... Debugging I'm seeing, that in "after" event .select() is working and can see that needful record is selectted. But, as I can understand, "delete" trigger "reload" of grid and mine selection dissapears ... :(

How to solve this problem ?

Server side database (mysql+php).

Thanks in advance ...

EDITED (SOLVED):

Found solution. Not sure that this is good, but it's working ... Did something llike that : In own grid object added "grid_setRec" parameter. Then in "delete" event assign this value

   w2ui[ grd_obj.grid_id ].on( 'delete', function( event ) 
   {
      event.onComplete = function()
      { 
         var min_ind = 10000
         var sel = w2ui[ grd_obj.grid_id ].getSelection()
         for ( var r in sel )
         {
            var ind = w2ui[ grd_obj.grid_id ].get( sel[ r ].recid, true )
            min_ind = Math.min( ind, min_ind )
         }
         if ( w2ui[ grd_obj.grid_id ].total > 0 )
         {
            var ind = w2ui[ grd_obj.grid_id ].prevRow( min_ind )
            var rcd = w2ui[ grd_obj.grid_id ].records[ ind ]
            grd_obj.grid_setRec = rcd[ grd_obj.grid_table.grid_key ]
         }
      }
   })

In "load" event seeing this value :

   w2ui[ grd_obj.grid_id ].on( 'load', function( event ) 
   {
      event.onComplete = function()
      { 
         if ( grd_obj.grid_setRec != '' )
         {
            reload_callBack( grd_obj, grd_obj.grid_setRec )
            grd_obj.grid_setRec = ''
         }
      }
   })

reload_callBack function I'm alreday using as "reload" event callback, then adding new record to grid.

function reload_callBack( grd_obj, rcd_id )
{
   setTimeout( function ()
   { 
      w2ui[ grd_obj.grid_id ].selectNone()
      w2ui[ grd_obj.grid_id ].select( { recid: rcd_id, column: 0 } )
      var ind = w2ui[ grd_obj.grid_id ].get( parseInt( rcd_id ), true )
      w2ui[ grd_obj.grid_id ].scrollIntoView( ind )
   }, 100 )
}

Now it works as I wanted ... :)

Upvotes: 0

Views: 500

Answers (1)

Rimokas
Rimokas

Reputation: 15

Solved this problem, addign own variable for reload. "Delete" event triiger "load" event. Here I'm seeing need it reselect with callback function or not ...

Upvotes: 0

Related Questions