App.component.html
<div class="control-section">
<div id="scroll_wrapper1">
<div id="scroll_div"></div>
</div>
<div id="scroll_wrapper2">
<div id="grid_parent">
<ejs-grid [dataSource]="data" allowPaging="true" height="100%" width="100%” (load)="load($event)"
[pageSettings]="pageSettings"
>
<e-columns>
. . .
</e-columns>
</ejs-grid>
</div>
</div>
</div>
-----------------------------------------------------------------------------------
App.component.ts export class AppComponent {
load(args){
var wrapper1 = document.getElementById("scroll_wrapper1");
var wrapper2 = document.getElementById("scroll_wrapper2");
wrapper1.onscroll = function() {
wrapper2.scrollLeft = wrapper1.scrollLeft;
};
wrapper2.onscroll = function() {
wrapper1.scrollLeft = wrapper2.scrollLeft;
};
}
}
|
<style>
#scroll_wrapper1,
#scroll_wrapper2 {
width: 600px;
overflow-x: scroll;
overflow-y: hidden;
}
#scroll_wrapper1 {
height: 20px;
position: -webkit-sticky !important;
position: sticky !important;
top: 0% !important;
z-index: 1 !important;
}
#scroll_wrapper2 {
height: 500px;
}
#scroll_div {
width: 900px;
height: 20px;
}
#grid_parent {
width: 900px;
height: 500px;
overflow: auto;
}
</style>
|
App.component.ts
dataBound(args) {
var scroll = document.getElementById('wrapper1');
var content = document.getElementsByClassName('e-gridcontent')[0]; //get content
var grid = (document.getElementsByClassName('e-grid')[0] as any).ej2_instances[0];
grid.element.insertBefore(scroll, content); //by using insert before function we have place the scrollbar between the content and header
var wrapper1 = document.getElementById("wrapper1");
wrapper1.onscroll = function () { //bind onscroll event and
var grid = (document.getElementsByClassName('e-grid')[0] as any).ej2_instances[0];
grid.getContent().firstElementChild.scrollLeft = wrapper1.scrollLeft; // set the wrapper1 scrollLeft to the Grid scrollLeft
};
(this.grid.getContent().firstElementChild as any).onscroll = function () { //bind onscroll in grid scroller
var grid = (document.getElementsByClassName('e-grid')[0] as any).ej2_instances[0];
wrapper1.scrollLeft = grid.getContent().firstElementChild.scrollLeft; // set the Grid scrollLeft to the wrapper1 scrollLeft
};
}
}
|
App.component.html
<div class="control-section">
<div id="wrapper1">
<div id="div1"></div>
</div>
<ejs-grid
#grid
[dataSource]="data"
allowPaging="true"
height="500px"
width="600px"
(dataBound)="dataBound($event)"
[pageSettings]="pageSettings"
>
<e-columns>
. . . . . . . . . .
</e-columns>
</ejs-grid>
</div> |
index.html
<style>
#wrapper1{
width: 580px;
overflow-x: scroll;
overflow-y:hidden;
}
#wrapper1 {height: 20px; }
#div1 {
width:800px;
height: 20px;
}
</style>
|
<div class="control-section">
<div id="wrapper1">
<div id="div1"></div>
</div>
<ejs-grid
#grid
[dataSource]="data"
allowPaging="true"
height="500px"
width="100%"
(dataBound)="dataBound($event)"
[pageSettings]="pageSettings"
>
<e-columns>
. . .
</e-columns>
</ejs-grid>
</div>
|
export class AppComponent {
public data: Object[];
public pageSettings: Object;
@ViewChild('grid')
public grid: GridComponent;
ngOnInit(): void {
this.data = data;
this.pageSettings = { pageCount: 5 };
}
dataBound(args) {
var scroll = document.getElementById('wrapper1')
var content = document.getElementsByClassName('e-gridcontent')[0];
var grid = (document.getElementsByClassName('e-grid')[0] as any).ej2_instances[0];
grid.element.insertBefore(scroll, content);
var wrapper1 = document.getElementById("wrapper1");
wrapper1.onscroll = function () {
var grid = (document.getElementsByClassName('e-grid')[0] as any).ej2_instances[0];
grid.getContent().firstElementChild.scrollLeft = wrapper1.scrollLeft;
};
(this.grid.getContent().firstElementChild as any).onscroll = function () {
var grid = (document.getElementsByClassName('e-grid')[0] as any).ej2_instances[0];
wrapper1.scrollLeft = grid.getContent().firstElementChild.scrollLeft;
}
}
} |
#wrapper1 {
width: 98.8%;
overflow-x: scroll;
overflow-y: hidden;
}
#wrapper1 {
height: 20px;
}
#div1 {
width: 2800px;
height: 20px;
} |
Nice, I just used this and it works great. Even managed to get it to work nicely with the sticky grid header.
Thanks!
Hi,
Thanks for the update. We were glad that the provided solution helped with your query. Please get back to us for further assistance.
Regards,
Dineshnarasimman M