2015-10-20 19 views
0

我试图在使用enableSmartRendering()在dhtmlxgrid中滚动时获取数据。初始load()运行良好,所以网格的顶部是可读的。但是,只要我向下滚动到没有数据的位置,并且它会尝试加载更多,浏览器就会一直发射XHR请求,直到我再次滚动备份,并且没有更多数据填充网格。通过XHR获取无限期动态智能呈现dhtmlxgrid循环的json数据

的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.

我都试过,没有发现任何人遇到这种确切的问题在本网站和其他搜索。当我尝试将动态智能渲染添加到一段较老的代码时,我发现这个问题,并且认为我会制作这个简单的短版本,以确保它不是旧代码的东西,但它仍然不起作用,但我可以'似乎无法自行解决问题。我错过了什么?

回答

1

我终于找到了解决方案。我没有正确构建阵列。此作品:

$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); 
+0

这是否适用于免费的GPL版本的DHTMLX?我试图做到这一点,但它只加载一次,并在滚动后不再继续。 – Redsandro

+0

不幸的是,似乎只适用于专业版。来源:http://docs.dhtmlx.com/grid__smart_rendering.html – Ztrom

+0

有一些不确定性,但在我[问上论坛]的信息被更新(http://forum.dhtmlx.com/viewtopic.php?f= 2吨= 49876)。感谢您回复此问题。 – Redsandro