1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>grid</title>
<style type="text/css">
/* les styles nécessaires pour le type d'affichage souhaite */
@import "dojox/grid/_grid/nihiloGrid.css";
@import "dojox/grid/resources/Grid.css";
@import "dojo/resources/dojo.css";
</style>
<script type="text/javascript" src="dojo/dojo.js"
djConfig="parseOnLoad: true"></script>
<script type="text/javascript">
dojo.require("dojox.grid.DataGrid");
dojo.require("dojo.data.ItemFileReadStore");
//ex d'un store avec des prix
var datas= { identifier: 'id',
label: 'id',
items: [
{ id: '0', prix: 12 },
{ id: '1', prix: 17 },
{ id: '2', prix: 22 },
{ id: '3', prix: 18 },
/* ici le total en dernière ligne...
on triche un peu en changeant l'affichage
des données... mais c'est une démo ! */
{ id: '-4-', prix: '-69-' }
]};
//on crée le store
store = new dojo.data.ItemFileReadStore({data: datas});
//on va écrire pour chaque colonne une fonction de comparaison
//spécifique qui s'arrange pour que le tri garde les totaux en
//bas de tableau
//on utilise grid.sortInfo qui est une propriété de l'objet DataGrid
//telle que grid.sortInfo = (l'index de la colonne triée base 1) * (1 si ASC et -1 si DESC)
//ex: tri DESC sur col 2 -> grid.sortInfo=-2
store.comparatorMap = {};
//le comparator spécifique s'appuie sur la petite tricherie du format appliqué aux totaux
//La fin justifie les moyens, c'est l'idée qui compte !
//si a ou b n'est pas un nombre c'est que c'est un total (vu notre format)
//et on renvoie donc une valeur + ou - en fonction du type de tri ASC ou DESC
//en s'appuyant sur grid.sortInfo
store.comparatorMap["prix"] = function(a, b){
if (isNaN(a)) {
return grid.sortInfo;
} else if (isNaN(b)) {
return -grid.sortInfo;
} else {
return a-b;
}
}
//on copie la focntion pour les ids
store.comparatorMap["id"] = store.comparatorMap["prix"] ;
</script>
</head>
<body>
<table dojoType="dojox.grid.DataGrid"
jsid="grid" id="grid"
store="store" query="{ id: '*' }" rowsPerPage="20" rowSelector="20px">
<thead>
<tr>
<th field="id" width="300px">ID</th>
<th field="prix" width="auto">Prix</th>
</tr>
</thead>
</table>
</body>
</html> |
Partager