我正在寻找 ag-grid 上的滚动事件,我想知道滚动何时到达末尾并加载下一组行,我知道如果您设置了无限滚动模式,那么 ag-grid 会调用 getRows 方法,但是在我的应用程序我没有立即获得下一组行,我调用服务器,服务器向客户端发送一条带有新行集的单独消息
问问题
6118 次
3 回答
3
有一个名为“ onBodyScroll ”的网格事件,您可以将事件处理程序附加到它。
这个事件有点秘密,因为它在 18 版之前的 GridOptions 类型上不存在,即使它确实有效。
看到这个评论:https ://github.com/ag-grid/ag-grid-enterprise/issues/89#issuecomment-264477535
他们确实在文档中有此事件:https ://www.ag-grid.com/javascript-grid-events/#miscellaneous
身体滚动事件
bodyScroll - 身体水平或垂直滚动。
onBodyScroll = (event: BodyScrollEvent) => void;
interface BodyScrollEvent {
// Event identifier
type: string;
api: GridApi;
columnApi: ColumnApi;
direction: ScrollDirection;
left: number;
top: number;
}
于 2019-05-21T16:24:50.117 回答
1
深入后,我找到了解决这个问题的完美方法。
请注意这里我用的是AngularJS,但是很容易理解。
onBodyScroll:function(params) {
var bottom_px = $scope.gridOptions.api.getVerticalPixelRange().bottom;
var grid_height = $scope.gridOptions.api.getDisplayedRowCount() * $scope.gridOptions.api.getSizesForCurrentTheme().rowHeight;
if(bottom_px == grid_height)
{
alert('Bottom')
}
},
于 2021-03-25T12:06:30.753 回答
1
您应该能够按照以下示例执行该操作(从服务器加载数据)。
首先,定义你的dataSource
.
const dataSource: IServerSideDatasource = {
getRows: (params: IServerSideGetRowsParams) => this._getRows(params, [])
};
this.gridApi.setServerSideDatasource(dataSource);
像这样声明_getRows
方法。
private _getRows(params: IServerSideGetRowsParams, data: any[]) {
this.gridApi.showLoadingOverlay();
service.getData(params) // the payload your service understands
.subscribe((result: any[]) => {
params.successCallback(result, -1);
params.failCallback = () => console.log('some error occured while loading new chunk of data');
this.gridApi.hideOverlay();
},
error => this._serverErrorHandler(error)
);
}
这几乎是不言自明的。如果您有任何不清楚的地方,请告诉我。
顺便说一句,我已经使用typescript
了这个例子,javascript
例子对于ag-grid-react来说是一样的
于 2019-03-13T10:23:50.300 回答