我正在尝试通过enableSmartRendering()在dhtmlxgrid中滚动时获取数据。初始load()可以很好地工作,因此网格的顶部是可读的。但是,一旦我向下滚动到没有数据的位置并尝试加载更多数据,浏览器就会不断触发XHR请求,直到我再次向上滚动,而网格中不再容纳任何数据。

Javascript:

mygrid = new dhtmlXGridObject("grid");
mygrid.setImagePath("codebase/imgs/");
mygrid.setHeader("Col1,Col2");
mygrid.setInitWidths("100,200");
mygrid.setColAlign("right,left");
mygrid.setColTypes("ro,ro");
mygrid.enableSmartRendering(true, 20);
mygrid.init();
mygrid.load("test.php?anrop=ajax", "json");


PHP:

if (isset($_GET['posStart'])) {
    $start = $_GET['posStart'];
} else {
    $start = 0;
}
if (isset($_GET['count'])) {
    $c = $_GET['count'];
} else {
    $c = 20;
}
$data['total_count'] = 1000;
$data['pos'] = $start;
for ($i = $start;$i <= ($start + $c) && $i < 1000;$i++) {
    $data['rows'][$i]['id'] = $i;
    $data['rows'][$i]['data'][0] = $i;
    $data['rows'][$i]['data'][1] = "string";
}

echo json_encode($data);


Link to short video showing the issue.

我尝试在该网站和其他网站上进行搜索,但没有找到遇到此确切问题的任何人。在尝试将动态智能渲染添加到较旧的代码段时遇到了问题,并且想出要简化此简短版本以确保它与旧代码无关,并且仍然无法正常工作,但是我可以似乎没有办法自己解决。我想念什么?

最佳答案

我最终找到了解决方案。我没有正确构建阵列。这有效:

$rows = array();
$temprows = array();
$rows['total_count'] = 1000;
$rows['pos'] = $start;
for ($i = $start;$i <= ($start + $c) && $i <= 1000;$i++) {
    $row = array();
    $data = array();
    $row['id'] = $i;
    $data[0] = $i;
    $data[1] = "string";
    $row['data'] = $data;
    array_push($temprows,$row);
}
$rows['rows'] = $temprows;
echo json_encode($rows);

09-17 04:29