2015-10-20 1 views
0

J'essaie d'extraire des données lors du défilement dans dhtmlxgrid avec enableSmartRendering(). La charge initiale() fonctionne bien, de sorte que la partie supérieure de la grille est lisible. Cependant, dès que je descends à l'endroit où je n'ai plus de données et que j'essaye de charger plus, le navigateur continue de tirer la requête XHR jusqu'à ce que je remonte à nouveau, sans plus de données qui peuplent la grille.Récupération de données json via XHR pour un rendu dynamique intelligent des boucles dhtmlxgrid indéfiniment

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.

J'ai essayé une recherche sur ce site et d'autres sans trouver quelqu'un rencontrant ce problème exact. J'ai eu le problème en essayant d'ajouter le rendu intelligent dynamique à un morceau de code plus ancien et je me suis dit que je ferais cette version simple et courte pour m'assurer que ce n'est pas quelque chose avec l'ancien code. J'ai l'impression de trouver la solution par moi-même. Qu'est-ce que je rate?

Répondre

1

J'ai finalement trouvé une solution. Je n'avais pas construit le tableau correctement. Cela fonctionne:

$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

Est-ce que cela fonctionne pour la version GPL gratuite de DHTMLX? J'essaye de faire ceci, mais il charge juste une fois et ne continue pas après défilement vers le bas. – Redsandro

+0

Semble être pour la version pro seulement, malheureusement. Source: http://docs.dhtmlx.com/grid__smart_rendering.html – Ztrom

+0

Il y avait une certaine ambiguïté, mais l'information a été mise à jour après que j'ai [demandé sur le forum] (http://forum.dhtmlx.com/viewtopic.php?f= 2 & t = 49876). Merci d'avoir répondu à cette question. – Redsandro