Reputation: 15
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
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