div data custom javascript backbone.js pagination backgrid backbone.paginator

data - tooltip javascript



¿Es posible hacer esta paginación sin backgrid? (2)

Desarrollé el siguiente código para compartir con ustedes un código JS / php que incluye la paginación del sitio del servidor y puede cambiarlo de acuerdo a su necesidad y luego puedo resumirlo mejor.

Primero haga la conexión a DB y cree una tabla de paginación:

CREATE TABLE `pagination` ( `id` INT( 16 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `name` VARCHAR( 50 ) NOT NULL , `age` INT( 3 ) NOT NULL , `company` VARCHAR( 50 ) NOT NULL )

Segundo inserte 400 mismos registros:

$i=0; while ($i< 400){ $pag="insert into pagination (id,name,age,company) VALUES (''NULL'',''john'',''40'',''google'')"; $excu=$mysqli->query($pag); $i++; }

Luego haz test.php

<!DOCTYPE html> <html><head> <style> #container{overflow-x: hidden;max-width:90%;min-width:90% ;margin: 0 auto;} td{max-width:10%;min-width:10%} tr,td{border:1px solid black } #page{display:inline;border:1px solid black} #numb,#numbs{display:none} .button{background:white} </style> </head> <body > <?php $defaultoption ="10";?> <div id=container></div><span id=numb></span><span id=numbs><?php echo $defaultoption;?></span> <script type=text/javascript src=js.js></script> </body> </html>

Luego crea js.js:

onload = function (){ var container=document.getElementById("container"); var table =document.getElementById("numbs").innerHTML; var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (xhttp.readyState == 4 && xhttp.status == 200) { container.innerHTML=xhttp.responseText; var button=document.getElementById("button"); button.children[0].disabled="true"; button.children[0].style.background="yellow"; }} xhttp.open("POST", "testa.php", true); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.send("table="+table); } function select(){ var sel =document.getElementById("select"); var table=sel.options[sel.selectedIndex].value; var b2 =document.getElementById("numbs"); b2.innerHTML=table; var se = new XMLHttpRequest(); se.onreadystatechange = function() { if (se.readyState == 4 && se.status == 200) { document.getElementById("container").innerHTML=se.responseText; var button=document.getElementById("button"); button.children[0].disabled="true"; button.children[0].style.background="yellow"; }} se.open("POST", "testa.php", true); se.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); se.send("table="+table); } function button(button){ var b2 =document.getElementById("numbs"); var b1 =button.innerHTML; var numb = document.getElementById("numb"); numb.innerHTML=b1; var b= b2.innerHTML; var butt = new XMLHttpRequest(); butt.onreadystatechange = function() { if (butt.readyState == 4 && butt.status == 200) { document.getElementById("container").innerHTML=butt.responseText; var d = document.getElementsByClassName("button"); for(i=0;i<d.length;i++){ if(d[i].innerHTML == numb.innerHTML){d[i].disabled="true"; d[i].style.background="yellow"; }}}} butt.open("POST", "testa.php", true); butt.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); butt.send("b="+b+"&b1="+b1); }

Hacer testa.php:

<?php $pag="SELECT * FROM pagination ORDER BY id ASC "; $exc=$mysqli->query($pag); $numrwos =mysqli_num_rows($exc); if($_POST[''b'']){ $b =$_POST[''b'']; $b1 =$_POST[''b1'']; $max=($b*$b1); $m =($b1-1); $n =($m*$b); $min =($n-1); if($numrwos){ echo "<select id=select onchange=select()><option selected=selected>Show Entries</option>"; if($numrwos < 11){ echo "<option>10</option>"; }elseif($numrwos > 10 && $numrwos < 26){ echo "<option>10</option><option>25</option>"; }elseif($numrwos > 25 && $numrwos < 51){ echo "<option>10</option><option>25</option><option>50</option>";}else{ echo "<option>10</option><option>25</option><option>50</option> <option>100</option>";} echo "</select><br />"; echo "<table width=80% id=table>"; echo "<tr><td width=10%>id</td><td>name</td><td>age</td><td>company</td></tr>"; $stop="0"; while ($result=mysqli_fetch_array($exc)){ if($stop > $min && $stop < $max){ echo "<tr><td>".$result[''id'']."</td><td>".$result[''name'']."</td> <td>".$result[''age'']."</td><td>".$result[''company'']."</td></tr>"; }else{} $stop++; }echo "</table><br />"; echo "<div id=button>"; $i=0; while($i < $numrwos){ $page+=$i % $b == $b-1; $i++; if($i%$b == 1){ $pagenum=$page+1; echo "<button class=button onmouseover=''button(this)''>".$pagenum."</button>";}} echo "</div>"; }else{echo "no records";} }else{ $t =$_POST["table"]; if($numrwos){ echo "<select id=select onchange=select()><option selected=selected>Show Entries</option>"; if($numrwos < 11){ echo "<option>10</option>"; }elseif($numrwos > 10 && $numrwos < 26){ echo "<option>10</option><option>25</option>"; }elseif($numrwos > 25 && $numrwos < 51){ echo "<option>10</option><option>25</option><option>50</option>";}else{ echo "<option>10</option><option>25</option><option>50</option> <option>100</option>";} echo "</select><br />"; echo"<table width=80% id=table>"; echo "<tr><td width=10%>id</td><td>name</td><td>age</td><td>company</td></tr>"; $stop="0"; while ($result=mysqli_fetch_array($exc)){ echo "<tr><td>".$result[''id'']."</td><td>".$result[''name'']."</td> <td>".$result[''age'']."</td><td>".$result[''company'']."</td></tr>"; if($stop ==$t-1){break;} $stop++; }echo "</table><br />"; echo "<div id=button>"; $i=0; while($i < $numrwos){ $page+=$i % $t == $t-1; $i++; if($i%$t == 1){ $pagenum=$page+1; echo "<button class=button onmouseover=''button(this)''>".$pagenum."</button>";}} echo "</div>"; }else{echo "no records";} } ?>

Deseo que te ayude

Estoy tratando de implementar la paginación del lado del servidor como fechable y encontré la biblioteca backbone.paginator , no sé si hay algo más.

A través de sus ejemplos, usaron otra biblioteca para ayudar a lograr esto, que es backgrid.js y su complemento de paginador.

¿Es posible hacer esta paginación sin Backgrid? ¿Podría agregar algún ejemplo sobre esto?


lo hice

en la función View initialize

Yo lo llamo

this.reloadCustomPages();

aquí su implementación

reloadCustomPages: function(options) { var self = this; self.block(); self.customPages.fetch({data: $.param(options)}).always(function () { self.unblock(); }); }

en el lado del servidor (primavera de Java) modifiqué la API para aceptar nuevas cadenas de consulta

@RequestParam(value = "pageNumber", defaultValue = "1"), @RequestParam(value = "perPage", defaultValue = "10")

y en lugar de devolver la lista directamente, devuelve información de paginación útil como

  • cantidad total de elementos en la base de datos
  • página actual nuber
  • tamaño de página
  • y los artículos en sí

mira este fragmento del lado del servidor (sé que no está relacionado, pero vale la pena mirarlo)

@RequestMapping(value = "/editor/pages", method = RequestMethod.GET) public void listPages(@RequestParam(value = "pageNumber", defaultValue = "1") Integer pageNumber, @RequestParam(value = "perPage", defaultValue = "10") Integer perPage, HttpServletResponse httpResp) throws IOException { Long recordsTotal = pageSvc.findTotalNumberOfPages();// select count(*) from table_name List<PbCustomPage> pages = pageSvc.findPages(pageNumber, perPage);// server side query that gets a pagenated data BackbonePaginatorResponse response = new BackbonePaginatorResponse();// I created this simple class response.setTotalCount(recordsTotal); response.setPageNumber(pageNumber); response.setPerPage(perPage); response.setItems(pages); httpResp.setContentType("application/json"); json.createCustomPageSerializer().addProperties().serialize(response, httpResp.getWriter());// just make your server send that obkect }

Ahora de vuelta la llamada a la función va a terminar el servidor para obtener la página 1 con un tamaño de página de 10

en mi plantilla, tengo esto

<div class="pagination clear" style="text-align: center;"> <%= customPages.paginationHtml %> </div>

déjame decirte cómo lo puebla

customPages.paginationHtml = this.generatePagination(customPages);

y aquí está la parte más importante

generatePagination: function (paginationResponse) { var currentPage = paginationResponse.pageNumber, lastPage = paginationResponse.totalCount==0?1:Math.ceil(paginationResponse.totalCount/paginationResponse.perPage); var html = ''<ul class="pagination">''; html += ''<li class="''+(currentPage == 1?"disabled":"")+''" data-pb-page-number="1"><a href="#" class="first">&laquo;&laquo;</a></li>''; html += ''<li class="''+(currentPage == 1?"disabled":"")+''" data-pb-page-number="''+(currentPage==1?1:currentPage-1)+''"><a href="#" class="prev">&laquo;</a></li>''; for (var i = 1; i <= lastPage; i++) { html += ''<li class="''+(currentPage == i?"active":"")+''" data-pb-page-number="''+i+''"><a href="#" class="page">''+ i +''</a></li>''; } html += ''<li class="''+(lastPage == currentPage?"disabled":"")+''" data-pb-page-number="''+(currentPage==lastPage?lastPage:currentPage+1)+''"><a href="#" class="next">&raquo;</a></li>''; html += ''<li class="''+(lastPage == currentPage?"disabled":"")+''" data-pb-page-number="''+(lastPage)+''"><a href="#" class="last">&raquo;&raquo;</a></li>''; html += ''</ul>''; return html; },

cada li que creo tiene data-pb-page-number para ser utilizado más tarde

una cosa más, cómo hacer nuevas solicitudes a otras páginas

en la función View initialize

this.el.on(''click'', ''ul.pagination li:not(.disabled,.active)'', this.getCustomPagesPagination);

aquí su implementación

getCustomPagesPagination: function (e) { e.preventDefault(); var $el = $(e.target).closest("li"); this.reloadCustomPages({pageNumber:$el.data("pb-page-number")}) },

el resultado es así

así como resolví mi problema, pero la pregunta aún no respondía