]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojox/data/demos/demo_QueryReadStore_grid.html
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojox / data / demos / demo_QueryReadStore_grid.html
diff --git a/static/dojo-release-1.1.1/dojox/data/demos/demo_QueryReadStore_grid.html b/static/dojo-release-1.1.1/dojox/data/demos/demo_QueryReadStore_grid.html
new file mode 100644 (file)
index 0000000..3f7db7e
--- /dev/null
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+       <title>Dojox QueryReadStore+grid Demo</title>
+       <style type="text/css">
+               @import "../../../dijit/themes/tundra/tundra.css";
+               @import "../../../dojo/resources/dojo.css";
+               @import "../../../dijit/tests/css/dijitTests.css";
+               /* BE SURE TO NEVER FORGET IMPORTING THE GRID's CSS, or you will wonder why the hell the grid looks so strange (or even think that it doesnt work) */
+               @import "../../../dojox/grid/_grid/tundraGrid.css";
+       </style>
+
+       <script type="text/javascript" src="../../../dojo/dojo.js" djConfig="isDebug:true, parseOnLoad: true"></script>
+</head>
+<body class="tundra">
+
+       <h1 class="testTitle">Dojox QueryReadStore + Grid demo - paging, sortable and filterable all server-side</h1>
+       <h2>The grid is in HTML, store, model, etc. are JS, sorting is added by extending the model class</h2>
+       <b>Capabilities:</b> load data from server, show data, paging (30 rows at a time), sort, filter<br />
+       You can see that data are loaded upon demand by scrolling down in the grid below line #30,
+       open FireBug and you see a server request being issued, to retreive another 30 rows/items.<br />
+       <br /><br />
+       <input type="text" onkeyup="doSearch(this)" />
+       <div id="grid1" dojoType="dojox.Grid" style="height:300px; width:800px;"></div>
+
+       <h2>The store and grid are "generated" and connected in HTML, filtering is done via JS</h2>
+       This store is by default sorted descending by name (not as the one above, which is ascending).
+       <div dojoType="dojox.data.QueryReadStore"
+               jsId="store2"
+               url="../tests/stores/QueryReadStore.php"
+               requestMethod="post"></div>
+       <div dojoType="dojox.grid.data.DojoData"
+               jsId="model2"
+               store="store2"
+               sortFields="[{attribute: 'capital', descending: true}]"
+               rowsPerPage="30"></div>
+       <div dojoType="dojox.Grid" id="grid2"
+               model="model2"
+               structure="gridLayout"
+               style="height:300px; width:800px;"></div>
+
+       <script type="text/javascript">
+               dojo.require("dojo.parser"); // scan page for widgets and instantiate them
+               dojo.require("dojox.grid.Grid");
+               dojo.require("dojox.grid._data.model"); // dojox.grid.data.DojoData is in there
+               dojo.require("dojox.data.QueryReadStore");
+               var gridLayout = [
+                       {
+                               cells: [[
+                                       {
+                                               name: "row #",
+                                               width:5,
+                                               styles: "text-align:right;",
+                                               get:function(inRowIndex) { return inRowIndex+1;} // this auto generates a row num
+                                       } 
+                                       ,{
+                                               name: "id",
+                                               field: "id",
+                                               styles: "text-align:right;",
+                                               width:5
+                                       } 
+                                       ,{
+                                               name: "Name",
+                                               field: "name",
+                                               width:20
+                                               //formatter: rs.chunk.adminUser.grid.formatUser
+                                       }
+                                       ,{
+                                               name: "Capital",
+                                               field: "capital",
+                                               width:20
+                                               //formatter: rs.chunk.adminUser.grid.formatUser
+                                       }
+                                       ,{
+                                               name: "Label",
+                                               width:20,
+                                               //styles: "text-align:right;",
+                                               field: "label"
+                                               //formatter: phpr.grid.formatDate
+                                       }
+                                       ,{
+                                               name: "Abbrev.",
+                                               width:5,
+                                               //styles: "text-align:right;",
+                                               field: "abbreviation"
+                                               //formatter: phpr.grid.formatDate
+                                       }
+                               ]]
+                       }
+               ];
+               // Connect the model and store AFTER the page is loaded, since we can only access
+               // the widget then, since it will be created just before dojo.addOnLoad() is called.
+               var grid = null;
+               dojo.addOnLoad(function() {
+                       // Instanciate the store, pass it to the model, connect them to the grid and add the layout ... just some hand work :-)
+                       //var store = new dojox.data.QueryReadStore({url:"../tests/stores/QueryReadStore.php", requestMethod:"post", doClientPaging:false});
+                       var store = new dojox.data.QueryReadStore({
+                               url:"../tests/stores/QueryReadStore.php",
+                               requestMethod:"post"
+                       });
+                       var model = new dojox.grid.data.DojoData(null, null, {
+                               store:store,
+                               rowsPerPage:30,
+                               sortFields:[{attribute: 'name', descending: false}]
+                       });
+                       grid = dijit.byId("grid1");
+                       grid.setModel(model);
+                       grid.setStructure(gridLayout);
+                       grid2 = dijit.byId("grid2");
+               });
+               
+               var lastSearchValue = "";
+               function doSearch(el) {
+                       if (el.value!=lastSearchValue) {
+                               grid.model.query = {name:el.value};
+                               lastSearchValue = el.value;
+                               grid.model.requestRows();
+                               
+                               // Filter the grid2 too.
+                               grid2.model.query = {name:el.value};
+                               grid2.model.requestRows();
+                       }
+               }
+       </script>
+
+
+</body>
+</html>