[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:
(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:
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!
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
January 9,