Erro ao paginar Ext JS 2

5 respostas
F

Boa Noite,

Não estou conseguindo paginar os meus resultados, os dados aparecem perfeitamente , quando tento paginar não retornar nenhum registro e o mesmo acontece quando clico para dar um reload no grid, os dados somem, abaixo o codigo para tentarem me ajudar… obrigado.

Ext.onReady(function(){

    var COL = Ext.data.Record.create([
           {name: 'email', type: 'string'},
           {name: 'tipo', type: 'string'},
           {name: 'id'}
      ]);

    // create the Data Store
    var store = new Ext.data.Store({

        proxy:  new Ext.data.HttpProxy({
        	url: 'http://127.0.0.1:8080/comercial/emailsXML''}),
        reader: new Ext.data.XmlReader({
               record: 'row',
 			   totalProperty: 20
           }, COL),
        sortInfo:{field:'email', direction:'ASC'}
    });
    
    // create the grid
    var grid = new Ext.grid.GridPanel({
 		store: store,
        trackMouseOver:false,
        disableSelection:false,
        loadMask: true,
        columns: [
            {header: "ID", width: 50, dataIndex: 'id', sortable: true},        
            {header: "EMail", width: 300, dataIndex: 'email', sortable: true},
            {header: "Tipo", width: 180, dataIndex: 'tipo', sortable: true}

        ],
        
        renderTo:'grid-example',
        title: 'Emails',
        stripeRows: true,
        width:540,
        height:200,
		bbar: new Ext.PagingToolbar({
            pageSize: 10,
            store: store,
            displayInfo: true
        })

    });

    store.load({params:{start: 0, limit: 15}});
});

5 Respostas

F

Por favor alguem pode me ajudar ???

bsl.lacerda

Vamos tentar…
Pelo que eu vi, a paginação do seu Grid está ok.
Abaixo um exemplo que fiz a uns tempos atrás.

// Tamanho da pagina
    var pageSize = 15;
    // Create the grid
    var grid = new Ext.grid.GridPanel({
        store: store,
        iconCls: 'icon-grid',
        cm: cm,
        width: 'auto',
        height: 400,
        autoExpandColumn: 'username',
        frame: false,
        border : false,
        tbar : tb_items,
        bbar: new Ext.PagingToolbar({
    						 			pageSize: pageSize,
										store: store,
						            	displayInfo: true,
						            	displayMsg: 'Mostrando resultados {0} - {1} de {2}',
										emptyMsg: 'Nenhum resultado para mostrar'
        							})
    });

Verifica a sua query.
Ela retorna algum registro?
Está usando Hibernate?

bsl.lacerda

Vamos tentar…
Pelo que eu vi, a paginação do seu Grid está ok.
Abaixo um exemplo que fiz a uns tempos atrás.

// Cria o DataStore
   var store = new Ext.data.JsonStore({
        url: '/log/list.do',
		root: 'logs',
		totalProperty:'totalSize',
		fields: [
			'id',
			{name: 'date', type: 'date', dateFormat: 'd/m/Y'},
			'username',
			'entity',
			'entityId',
			'operation'
			],
        sortInfo:{field:'date', direction:'ASC'}
    });

// Tamanho da pagina
    var pageSize = 15;
    // Create the grid
    var grid = new Ext.grid.GridPanel({
        store: store,
        iconCls: 'icon-grid',
        cm: cm,
        width: 'auto',
        height: 400,
        autoExpandColumn: 'username',
        frame: false,
        border : false,
        tbar : tb_items,
        bbar: new Ext.PagingToolbar({
    						 			pageSize: pageSize,
										store: store,
						            	displayInfo: true,
						            	displayMsg: 'Mostrando resultados {0} - {1} de {2}',
										emptyMsg: 'Nenhum resultado para mostrar'
        							})
    });

Verifica a sua query.
Ela retorna algum registro?
Está usando Hibernate?

F

Estou retornando um xml, o problema não pode ser de como retorna os dados, tenho que usar json ?
Sou novato em ExtJs, posso retornar uma list utilizando o Hibernate ou como posso montar meu retorno com json ?

Minha servlet:

response.setContentType("text/xml");  
response.setHeader("Cache-Control", "no-cache");  
PrintWriter out = response.getWriter();  
Document xmldoc = new DocumentImpl();  
Element e,e1;  
Element root = xmldoc.createElement("rows");  
  
e1 = xmldoc.createElementNS(null, "page");  
e1.appendChild(xmldoc.createTextNode("1"));  
root.appendChild(e1);  
  
e1 = xmldoc.createElementNS(null, "total");  
e1.appendChild(xmldoc.createTextNode("2"));  
root.appendChild(e1);  
  
DaoFactory factory = new DaoFactory();  
List<Emails> list = factory.getEmailsDao().lista();  
  
for (Emails client : list) {  
    e = xmldoc.createElementNS(null, "row");  
    e.setAttributeNS(null, "id", String.valueOf(client.getId()));  
  
    e1 = xmldoc.createElementNS(null, "id");  
    e1.appendChild(xmldoc.createTextNode(client.getId().toString()));  
    e.appendChild(e1);  
  
    e1 = xmldoc.createElementNS(null, "email");  
    e1.appendChild(xmldoc.createTextNode(client.getEmail()));  
    e.appendChild(e1);  
      
    e1 = xmldoc.createElementNS(null, "tipo");  
    e1.appendChild(xmldoc.createTextNode(client.getTipo()));  
    e.appendChild(e1);  
  
    root.appendChild(e);  
}  
  
xmldoc.appendChild(root);  
OutputFormat format = new OutputFormat(xmldoc);  
format.setIndenting(true);  
XMLSerializer serializer = new XMLSerializer(out, format);  
try {  
    serializer.asDOMSerializer();  
    serializer.serialize(xmldoc);  
} catch (IOException e5) {  
    e5.printStackTrace();  
}
bsl.lacerda

Eu utilizei Json, não é difícil.
Você quer retornar uma lista de Objetos de um tipo ok?

Tenta assim com JSP mesmo.

O exemplo do JSP do exemplo que postei acima.

<%@ page language="java" contentType="text/plain;charset=UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
{ logs : [
<c:forEach items="${loglist}" var="log" varStatus="status">	
	{	
		id : '${log.id}',<fmt:formatDate var="day" pattern="dd/MM/yyyy" value="${log.date}"/>
		date : '${ day }',
		username : '${log.username}',
		entity : '${log.entity}',
		entityId : '${log.entityId}',
		operation : '${log.operation}'
	}<c:if test="${!status.last}">,</c:if></c:forEach>
],
totalSize :  '${totalSize}'
}

Onde estes elementos irão compor o seu DataStore… :wink:

Criado 28 de dezembro de 2008
Ultima resposta 29 de dez. de 2008
Respostas 5
Participantes 2