RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 634141
Accepted
sag3ll0
sag3ll0
Asked:2020-03-01 22:03:48 +0000 UTC2020-03-01 22:03:48 +0000 UTC 2020-03-01 22:03:48 +0000 UTC

dxDatagrid 查找列数据源

  • 772

你好。我用的是devExpress for js,有一个dxdataGrid表,里面有datasource和一个通过lookup实现下拉列表的column,引用它的dataSource,这两种情况下都启用了Pagination

    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 个记录。数据源我已经描述过

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 条记录的表中,后台分别有另外 150 万段,这一切都非常减缓。不应该是这样的

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 条记录,但是当使用请求加载供应商页面时,他们获得全部 29 个(如果不是 29 个,而是 150 万个),尽管只需要一个就可以完全显示页面。也许我在某个地方搞砸了?

javascript
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Uranus
    2020-03-05T23:57:56Z2020-03-05T23:57:56Z

    这是网格中查找工作的一个特点 - 页面加载始终被禁用。这样做是因为网格通常显示多行,并且在每一行中查找都应显示与外键值对应的文本。

    正常查找(未内置到网格中)从数据源获取此文本,在页面加载的情况下,这会导致对服务的请求。但是在一个网格中,如果遵循代码重用的原则,那么就会发出 N 个请求,其中 N 是外键分散的页面数。这会导致加载网格时出现明显的延迟。在一般情况下,加载整个 dataSource 并通过在内存中列出它们来从中选择必要的元素会更有效。

    我强调“一般”是因为规则总是有例外,对大多数应用程序有效的方法在某些特殊情况下会造成不必要的浪费。如果查找绑定到一个大表,最好不要依赖内置的查找机制,而是使用扩展和选择选项将所需的值添加到选择中。在特定情况下,这样的样本将比 lucap 更有效。

    dataSource: {
        store:context.Products,
        expand: "Supplier",
        select: ["ProductName", "Supplier.ContactName"]   
    },
    paging: {
      enabled: true,
      pageSize: 1
    },
    
    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    Python 3.6 - 安装 MySQL (Windows)

    • 1 个回答
  • Marko Smith

    C++ 编写程序“计算单个岛屿”。填充一个二维数组 12x12 0 和 1

    • 2 个回答
  • Marko Smith

    返回指针的函数

    • 1 个回答
  • Marko Smith

    我使用 django 管理面板添加图像,但它没有显示

    • 1 个回答
  • Marko Smith

    这些条目是什么意思,它们的完整等效项是什么样的

    • 2 个回答
  • Marko Smith

    浏览器仍然缓存文件数据

    • 1 个回答
  • Marko Smith

    在 Excel VBA 中激活工作表的问题

    • 3 个回答
  • Marko Smith

    为什么内置类型中包含复数而小数不包含?

    • 2 个回答
  • Marko Smith

    获得唯一途径

    • 3 个回答
  • Marko Smith

    告诉我一个像幻灯片一样创建滚动的库

    • 1 个回答
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Алексей Шиманский 如何以及通过什么方式来查找 Javascript 代码中的错误? 2020-08-03 00:21:37 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5