dxDatagrid LookUp column DataSource

542
03 марта 2017, 01:30

Здравствуйте. Использую devExpress для js есть таблица dxdataGrid c datasource и столбец реализующий выпадающий список через lookup, ссылающийся на свой dataSource, Пагинация включена в обоих случаях

    this.$scope.dxGridLocalConfig = {
        dataSource: AService.dataSource,
        paging: {
            enabled: true,
            pageSize: 25
        },
        columns: [{
                    dataField: 'SId',
                    caption: 'S',
                    lookup: {
                       dataSource: {
                          store: SService.store,
                          paginate: true,
                          pageSize: 25,                    
                       },
                       valueExpr: 'Id',
                       displayExpr: 'FullName'
                     }                    
  }]
}

проблема заключается в том что загрузке страницы с таким гридом, Сначала идет запрос на источник с данными с учетом пагинации для всей таблицы (я использую odata DataSource)

http://localhost/odata/A?%24orderby=Id&%24top=25&%24count=true

затем идет запрос к

http://localhost/odata/S

который запрашивает ВСЕ записи вместо того что бы или ничего не запрашивать или только первые 25. DataSource у меня описаны через

this.store = ODataService.context.S;
this.dataSource = new DevExpress.data.DataSource({
    store: this.store,
    paginate: true,
    pageSize: 25,
});

и контекст в свою очередь

this.context = new DevExpress.data.ODataContext({
                url: `localhost/odata/`,
                entities: {
                    S: {
                        key: 'Id',
                        keyType: 'Int32'
                    },

При это при щелчке внутри связанного поля, открывается поле с прокруткой и отрабатывает как надо, то есть есть постепенная подгрузка запросами вида

http://localhost/odata/S?%24skip=50&%24top=25

Единственно чего я хочу избежать это загрузки всех данных из связанных полей, потому как данных там очень много и получается что в таблице с 3мя записями в фоновом режиме тянется еще 1,5млн, соответственно все это очень тормозит. Так быть не должно

UPD: Подготовил (точнее адаптировал) пример проблемы

/// <reference path="C:/Program Files (x86)/DevExpress 16.1/DevExtreme/Sources/Lib/ts/jquery.d.ts" /> 
/// <reference path="C:/Program Files (x86)/DevExpress 16.1/DevExtreme/Sources/Lib/ts/dx.all.d.ts" /> 
 
$(function() { 
  var context = new DevExpress.data.ODataContext({ 
    url: "http://services.odata.org/V4/Northwind/Northwind.svc/", 
    entities: { 
      Categories: { 
        key: "CategoryID", 
        keyType: "Int32", 
      }, 
      Suppliers: { 
        key: "SupplierID", 
        keyType: "Int32", 
 
      }, 
      Products: { 
        name: "Products", 
        key: "ProductID", 
        expand: ["Category"], 
        keyType: "Int32" 
      } 
    }, 
    version: 4 
  }) 
  $("#grid").dxDataGrid({ 
    dataSource: context.Products,        
    paging: { 
      enabled: true, 
      pageSize: 1 
    }, 
    columns: ["ProductID", { 
        dataField: "ProductName", 
      }, 
      { 
        dataField: "SupplierID", 
        lookup: { 
          dataSource: { 
            store: context.Suppliers, 
            paginate: true, 
            pagesize: 3 
          }, 
          displayExpr: "ContactName", 
          valueExpr: "SupplierID" 
        } 
      }, 
      { 
        dataField: "CategoryID", 
        lookup: { 
          dataSource: { 
            store: context.Categories, 
            paginate: true, 
            pagesize: 3 
          }, 
          displayExpr: "CategoryName", 
          valueExpr: "CategoryID" 
        } 
      } 
    ], 
    pagesize: 5, 
    filterRow: { 
      visible: true 
    }, 
    headerFilter: { 
      visible: true 
    }, 
    groupPanel: { 
      visible: true 
    } 
  }); 
});
<!DOCTYPE html> 
<html> 
 
<head> 
  <title>DevExtreme jQuery site</title> 
  <meta charset="utf-8" /> 
  <link rel="stylesheet" type="text/css" href="http://cdn3.devexpress.com/jslib/16.2.5/css/dx.common.css" /> 
  <link rel="stylesheet" type="text/css" href="http://cdn3.devexpress.com/jslib/16.2.5/css/dx.light.css" /> 
  <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.2.4.min.js"></script> 
  <script type="text/javascript" src="http://cdn3.devexpress.com/jslib/16.2.5/js/dx.all.js"></script> 
  <script type="text/javascript" src="16.2.4.js"></script> 
</head> 
 
<body> 
  <div id="grid"></div> 
</body> 
 
</html>

установлена размер страницы в 1 запись, но при загрузке страницы Suppliers при помощи запроса получают все 29 (а если бы их было не 29 а 1.5 млн) хотя нужна всего то одна, чтобы полностью отобразить страницу. может я где косячу?

READ ALSO
Изменения классов JS

Изменения классов JS

При изменении class="main main-active", block active меняется в диве main, а не main-activeКак исправить что бы active в div

234
Hover-эффект в навигации bootstrap

Hover-эффект в навигации bootstrap

Не могу найти, где задается hover-эффект для элементов навигацииПри наведении на элемент меню появляется белый бэкграунд (см

309
fancybox не применяется слайдер к галерее

fancybox не применяется слайдер к галерее

пытаюсь применить плагин fancybox для галереи, чтобы при клике на одну из картинок открывалось модальное окно, в котором будет слайдер

225
Баг MarionetteJs в хроме?

Баг MarionetteJs в хроме?

Здравствуйте! У меня проблема, и еще страннаяЕсть CollectionView

250