I've decided to go with scrollBy of the panel instead of spending much time on focusNode as internally focusNode is also doing scrollBy. Here is how i got the solution.
First, getting the node in the dataview based on record.
then, getting the node element's region and storing bottom value of region.
var node = dataview.getNode( record );
once i got the new item region, i'm scrolling the panel to the region bottom value.
var regionValue = Ext.get(node).getRegion().bottom;