Ag grid 如何使用ag grid在前端更快地加载4000条记录

Ag grid 如何使用ag grid在前端更快地加载4000条记录,ag-grid,Ag Grid,im使用ag grid rowmodeltype是企业级(服务器端),因为如果我加载所有记录,api响应几乎需要2-3分钟,所以使用服务器端分页 列标签分组ag网格没有提供任何后端示例来处理该问题 如果我们在客户端加载所有记录,那么ag网格的所有功能都可以正常工作,那么是否有任何方法可以更快地加载记录—大约10mb大小的数据,包含30列和40000条记录 大多数瓶颈发生在后端(数据库检索)。 为了减少缓慢的影响,你可以采用我使用的这个方法 增强后端api以支持服务器端分页调用 重构加载ajax调

im使用ag grid rowmodeltype是企业级(服务器端),因为如果我加载所有记录,api响应几乎需要2-3分钟,所以使用服务器端分页

  • 列标签分组ag网格没有提供任何后端示例来处理该问题
  • 如果我们在客户端加载所有记录,那么ag网格的所有功能都可以正常工作,那么是否有任何方法可以更快地加载记录—大约10mb大小的数据,包含30列和40000条记录

  • 大多数瓶颈发生在后端(数据库检索)。 为了减少缓慢的影响,你可以采用我使用的这个方法

  • 增强后端api以支持服务器端分页调用
  • 重构加载ajax调用以执行小规模调用(例如,前400行)
  • 完成第一次加载后,检查是否还有其他记录。如果是,则设置递归加载直到完成
  • 现在,用户将“看到”前400行,同时仍在加载剩余的3600行。这是您需要显示加载图标以显示进度的地方

    下面是加载此文件的代码示例

    var myList = [];
    
    var loadDataFunc = function( start, limit ) {
            _self.Status.IsLoading = true;
    
            $http
                .get( DataUrl + "?start=" + start + "&limit=" + limit)
                .then(function(response){
    
                    if( response && response.data && response.data.List) {
                        if( response.data.Total > 0 ) {
                            for( var z = 0; z < response.data.List.length; z++ ) {
                                myList.push(response.data.List[z]);
                            }
    
                            var currentItemsLoaded = start + response.data.List.length;
                            if( currentItemsLoaded < response.data.Total ) {
                                //means we still have pending to load, then we load again!
                                setTimeout(function(){
                                    loadDataFunc(currentItemsLoaded, limit);
                                }, 500);
                            }else {
                                //If it reaches here, it means we have completed loading
                                _self.Status.IsLoading = false;
                                _self.Status.IsLoaded = true;
                            }
                            BindDataToGrid();
                        } else {
                            _self.Status.IsLoading = false;
                            _self.Status.IsLoaded = true;   
                            if( start === 0 ) {
                                BindDataToGrid();
                            }
                        }
                    }
                    else {
                        _self.Status.IsLoading = false;
                        _self.Status.IsLoaded = true;
                    }
                })
                .catch(function(response){
                    _self.Status.IsLoading = false;
                    //error!
                });
        };      
    
        function BindDataToGrid () {
            setTimeout(function(){                  
              grid.api.setRowData(myList);
            },100);
        };
    
    var myList=[];
    var loadDataFunc=函数(开始、限制){
    _self.Status.IsLoading=true;
    $http
    .get(DataUrl+“?start=“+start+”&limit=“+limit”)
    .然后(功能(响应){
    if(response&&response.data&&response.data.List){
    如果(response.data.Total>0){
    对于(var z=0;z