:: Forum >>

[ScrollIntoView] How to show a given row as the first visible row

Hi Everyone,

I had the need to scroll a grid in order to show a given row at the index "myIndex", as the first row in the visible part of the grid in the page.

Using Alex's function "ScrollIntoView", I was able to show the selected row, but I managed to do so only as the last visible row.

To solve this problem I've simply changed the function this way:

function scrollIntoView(index){
            
             var row = this.getTemplate("row", index);
             var data = this.getTemplate("layout").getContent("data");
             var left = this.getTemplate("layout").getContent("left");
             var scrollbars = this.getTemplate("layout").getContent("scrollbars");
            
             try {
             var top, padding = parseInt(data.element().currentStyle.paddingTop);
             if (data.element().scrollTop > row.element().offsetTop - padding ) {
             top = row.element().offsetTop - padding ;
             left.element().scrollTop = top;
             data.element().scrollTop = top;
             scrollbars.element().scrollTop = top;
             }
            
             if (data.element().offsetHeight + data.element().scrollTop <
             row.element().offsetTop + row.element().offsetHeight ) {
             top = row.element().offsetTop ; [b]/* + row.element().offsetHeight - data.element().offsetHeight */ [/b]
left.element().scrollTop = top;
             data.element().scrollTop = top;
             scrollbars.element().scrollTop = top;
             }
             }
             catch(error){
             // ignore errors
             }
             }


(note that I've simply cut the last part of line #16.)

Is this the right way to solve my problem?
Do you think there is a better way?



And another little thing:

var myIndex = 10; /* just for example...*/

grid.timeout(function(){
scrollIntoView.call(grid, myIndex);
[b]grid.setSelectionIndex(myIndex);[/b] /* just to "select" the row.*/
});


Do you think that I can select the row this way? It works, but seems too simple... :-)




Thanks in advance

Ps. English isn't my motherlanguage...sorry!
Francesco Pezzato
Monday, January 9, 2006

This topic is archived.


Back to support forum

Forum search