我使用Dojo 1.7.1 dojo.store.JsonRest来为EnhancedGrid填充数据。 但是,使用Firebug我没有看到任何在启动时也没有发送的查询 过滤后悔。表格仍为空。
概述: 以声明方式创建增强的Grid和JsonRest Store。 存储配置为仅使用具有GET功能的REST服务 返回带有1个Element的Json数组。 按钮调用Grids过滤器函数来测试启动后是否发送查询。
服务返回一个静态Json字符串,如下所示:
[{id:'1',firstname:'John',lastname:'Doe'}]
源代码在这里:
<html>
<head>
<title>Rest Test</title>
<style type="text/css">
@import "js/dojo/resources/dojo.css";
@import "js/dijit/themes/claro/claro.css";
@import "js/dojox/grid/enhanced/resources/claro/EnhancedGrid.css";
@import "js/dojox/grid/enhanced/resources/EnhancedGrid_rtl.css";
</style>
<script type="text/javascript"
src="js/dojo/dojo.js"
data-dojo-config="parseOnLoad:true"></script>
<script type="text/javascript">
dojo.require("dijit.form.Button");
dojo.require("dijit.form.TextBox");
dojo.require("dojox.grid.EnhancedGrid");
dojo.require("dojox.grid.enhanced.plugins.DnD");
dojo.require("dojox.grid.enhanced.plugins.NestedSorting");
dojo.require("dojox.grid.enhanced.plugins.IndirectSelection");
dojo.require("dojo.store.JsonRest");
dojo.addOnLoad(function(){
dojo.connect(dijit.byId("filterButton"),"onClick",function(){
dijit.byId("nameTable").filter("*",true);
});
});
</script>
</head>
<body class="claro">
<button id="filterButton"
data-dojo-type="dijit.form.Button">
Filter Table
</button>
<span id="nameStore"
data-dojo-type="dojo.store.JsonRest"
data-target="http://localhost:8080/MyApp/rest/service3"/>
<table id="nameTable"
style="height:200px;"
data-store="nameStore"
data-dojo-type="dojox.grid.EnhancedGrid"
data-dojo-props="plugins:{dnd: true, nestedSorting: true, indirectSelection: true}" >
<thead>
<tr>
<th data-field="id" width="5%">ID</th>
<th data-field="firstname" width="45%">Vorname</th>
<th data-field="lastname" width="50%">Nachname</th>
</tr>
</thead>
</table>
</body>
</html>
我是Restful Webservices的新手,我很感激帮助解决这个问题。
答案 0 :(得分:1)
这可能不是你唯一的问题,但我注意到你使用的是较旧的EnhancedGrid,但使用的是较新的dojo.store.JsonRest而没有ObjectStore。 有关详细信息,请参阅this page。这是一个摘录:
1.6 DataGrid仍然基于dojo.data API,因此我们将使用dojo.data.ObjectStore适配器将我们的商店连接到DataGrid。