Pour afficher certaines données, j'utilise la vue de table qui prend en charge la radiomessagerie - CellTable
.CellTable: réorganisation dynamique des lignes
pour baliser l'interface utilisateur que j'utilise UIBinder
:
...
<g:HTMLPanel>
<c:CellTable pageSize='100' ui:field='myTable'/>
<c:SimplePager ui:field='myPager' location='CENTER'/>
</g:HTMLPanel>
...
Dans le widget, j'ai créé une table et Pagination:
@UiField(provided=true) CellTable<myDTO> myTable;
...
SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class);
myPager = new SimplePager(TextLocation.CENTER, pagerResources, false, 0, true);
myTable = new CellTable<myDTO>();
...
Puis-je installer un modèle de sélection -
final NoSelectionModel<myDTO> selectionModel = new NoSelectionModel<myDTO>();
selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
public void onSelectionChange(SelectionChangeEvent event) {
clickedObject = selectionModel.getLastSelectedObject();
}
});
myTable.setPageSize(50);
myTable.setSelectionModel(selectionModel);
Et ajouté quelques colonnes:
Column<myDTO, String> column1 = new Column<myDTO, String>(new TextCell()) {
@Override
public String getValue(myDTO data) {
return data.getSomeData1();
}
};
Column<myDTO, String> column2 = new Column<myDTO, String>(new TextCell()) {
@Override
public String getValue(myDTO data) {
return data.getSomeData2();
}
};
...
Column<myDTO, String> columnN = new Column<myDTO, String>(new TextCell()) {
@Override
public String getValue(myDTO data) {
return data.getSomeDataN();
}
};
myTable.addColumn(column1, "name of column1");
myTable.addColumn(column2, "name of column2");
...
myTable.addColumn(columnN, "name of columnN");
Ensuite, je crée AsyncDataProvider
:
AsyncDataProvider<myDTO> provider = new AsyncDataProvider<myDTO>() {
@Override
// is called when the table requests a new range of data
protected void onRangeChanged(HasData<myDTO> display) {
final int start = display.getVisibleRange().getStart();
final int lenght = display.getVisibleRange().getLength();
myService.findAll(new AsyncCallback<List<myDTO>>() {
public void onFailure(Throwable caught) {
// exception handling here
}
public void onSuccess(List<myDTO> data) {
updateRowCount(data.size(), true);
updateRowData(0, data);
}
});
}
};
provider.addDataDisplay(myTable);
Lorsque j'ajoute de nouvelles lignes ont-ils ajouté à la fin de la liste.
Je voudrais trier automatiquement les lignes lors de leur ajout - les valeurs ascendantes de certaines colonnes (ou décroissant - n'est pas important dans ce cas).
Comment puis-je l'implémenter?
Merci à tous.
Fonctionne très bien. Je vous remercie! –
Une petite note. Votre méthode fonctionne très bien, mais dans mon cas, j'ai décidé de le faire - trier les données sur le côté serveur et obtenir déjà trié des données. 'asc/desc' - en fonction d'un certain paramètre, que je passe à ma méthode de service * GWT RPC *. –
Pourriez-vous s'il vous plaît me dire que je dois appeler push() pour chaque colonne tout en définissant le gestionnaire. – Ashish