gpt4 book ai didi

javascript - DOJO:DataGrid 增量加载不起作用

转载 作者:行者123 更新时间:2023-11-30 18:32:45 25 4
gpt4 key购买 nike

我有这个问题

我使用 DataGrid + dojo.store.JsonRest 作为商店。我只想加载当前需要的那些项目。因此,当我只有 10000 个项目时,初始加载 ~ 100 个,其余的在用户滚动网格时下载。

我创建了两个文件

  1. datagridtest.php 包含数据网格
  2. jsonsource.php 实现测试数据源(应该返回不超过 499 条记录)

前 25 个项目显示正常。但是当我尝试向下滚动时,datagrid 不请求新项目 - 使用 FireBug 检查它。

请帮忙。我做错了什么。

下面是我的代码:

数据网格测试.php:

<html><head>
<link rel="stylesheet" type="text/css" href="../libs/dojo/dijit/themes/claro/claro.css" />
<link rel="stylesheet" type="text/css" href="../libs/dojo/dijit/themes/style.css" />
<script type="text/javascript"> djConfig = {parseOnLoad: true,} </script>
<script type="text/javascript" src="../libs/dojo/dojo/dojo.js"></script>
</head>
<body class="claro">

<style type="text/css">
@import "../libs/dojo/dojox/grid/resources/Grid.csss";
@import "../libs/dojo/dojo/resources/dojo.csss";
@import "../libs/dojo/dojox/grid/resources/claroGrid.css";
</style>

<script type="text/javascript">

dojo.require("dijit.dijit");
dojo.require("dojox.grid.DataGrid");
dojo.require("dojo.data.ObjectStore");
dojo.require("dojo.store.JsonRest");

var store, grid;
dojo.ready(function() {

store = new dojo.store.JsonRest({
target:"jsonsource.php",
idProperty: "id"
});

grid = new dojox.grid.DataGrid({
store: dataStore = dojo.data.ObjectStore({ objectStore: store }),
structure: [
{
cells: [
[
{ name: "Id", field: "id"},
{ name: "Name", field: "name" },
{ name: "E-Mail", field: "email", width: "200px"},
]
]
}
]
}, "gridDiv");

grid.startup();
} );

</script>

<div id="gridDiv"></div>
</body></html>

jsonsource.php:

<?php

$RangeTemp = explode("=", $_SERVER['HTTP_RANGE']);
$Range = explode("-", $RangeTemp[1]);
if ($RangeTemp[1] != "") {
$RangeFrom = $Range[0];
$RangeTo = $Range[1];
}

if ($RangeFrom > 500) { print "[ ]"; die(); }

?>
[
<?php for($i=$RangeFrom; $i<=$RangeTo; $i++): ?>
{
"id": <?=$i; ?>,
"name": "Jack <?=$i; ?>",
"email": "jack@jacekplacek.pl"
},
<?php endfor; ?>
]

最佳答案

我相信您需要设置“Content-Range” header ,让 Dojo 知道您返回了哪些记录,以及总共有多少条记录。

像这样设置标题:

header("Content-Range: items 0-24/10000");

在你的情况下,你会这样写:

header("Content-Range: items $RangeFrom-$RangeTo/$total");

希望对您有所帮助。

关于javascript - DOJO:DataGrid 增量加载不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9130730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com