2010-05-20 10 views
2

Quelqu'un peut-il m'expliquer comment la radiomessagerie fonctionne dans SmartGWT?Comment fonctionne la pagination SmartGWT?

Je le vois fonctionner dans le showcase, mais je ne le trouve pas documenté nulle part. (Les informations contenues dans javadocs sont loin d'être suffisantes pour comprendre ce qui se passe.)

J'ai un ListGrid, et un DataSource personnalisé qui interagit avec mon serveur.

Disons que je veux définir une taille de page de 25 enregistrements dans le ListGrid.

Que dois-je faire:

  • dans le ListGrid?
  • dans ma DataSource personnalisée (a-t-elle accès aux objets DSRequest et DSResponse)?
  • sur mon serveur?

Quels sont les paramètres envoyés par le client SmartGWT au serveur et quels sont les paramètres attendus par le client SmartGWT?

Répondre

4

Si vous utilisez intelligent GWT LGPL:

S'il vous plaît lire le Javadocs de RestDataSource comme il l'explique en détail: http://www.smartclient.com/smartgwt/javadoc/com/smartgwt/client/data/RestDataSource.html

ont également un regard sur l'échantillon de RestDataSource: http://www.smartclient.com/smartgwt/showcase/#featured_restfulds

Si vous utilisez Smart GWT EE, puis 1) Si vous utilisez le connecteur SQL, vous avez 0 code à écrire sur le serveur, le code côté serveur Smart GWT prenant en charge la liaison de données de câblage avec votre table de base de données. 2) Si vous avez besoin d'un contrôle de mode sur la liaison de données du serveur, vous pouvez appeler vos propres API de serveur lors du défilement (extraction), ou insérer/mettre à jour/supprimer. Jetez un oeil à la source de cet exemple: http://www.smartclient.com/smartgwtee/showcase/#javabeans

Cliquez sur le bouton Afficher la source et examinez la source de la classe SupplyItemDMI. Remarquez comment vous pouvez obtenir la ligne de début, les paramètres de la ligne de fin de la requête.

// By default, for a DSRequest of type "fetch", a method named "fetch" is invoked. 
// You can customize this via the <serverObject> declaration. 
public DSResponse fetch(DSRequest dsRequest) 
    throws Exception { 
    log.info("procesing DMI fetch operation"); 

    // Fetch a List of matching SupplyItem Beans from some pre-existing Java object model 
    // provided by you, represented by "SupplyItemStore" in this example 
    List matchingItems = 
     SupplyItemStore.findMatchingItems((Long) dsRequest.getFieldValue("itemID"), 
       (String) dsRequest.getFieldValue("itemName")); 

    // this implementation shows data paging (returning only ranges of requested records) 
    long startRow = dsRequest.getStartRow(); 
    long endRow = dsRequest.getEndRow(); 

    long totalRows = matchingItems.size(); 
    DSResponse dsResponse = new DSResponse(); 
    dsResponse.setTotalRows(totalRows); 
    dsResponse.setStartRow(startRow); 

    endRow = Math.min(endRow, totalRows); 
    dsResponse.setEndRow(endRow); 

    // trim the data to the requested range of records. In a real application, the startRow 
    // and endRow would be passed to the ORM layer or to SQL for maximum efficiency. 
    List results; 
    if (totalRows > 0) { 
     results = matchingItems.subList((int) dsResponse.getStartRow(), 
       (int) dsResponse.getEndRow()); 
    } else { 
     results = matchingItems; 
    } 

    // just return the List of matching beans 
    dsResponse.setData(results); 

    return dsResponse; 
}