2011-07-28 32 views
0

我一直在試圖用Json實現DoJo增強網格,到目前爲止我還沒有成功。用Json實現DoJo增強網格

這就是我迄今爲止所做的;

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<div xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:spring="http://www.springframework.org/tags" version="2.0"> 
<jsp:output omit-xml-declaration="yes"/> 
<spring:url value="/students/listdata" var="mydatasource"/> 

<script type="text/javascript"> 
    dojo.require("dojo.parser"); 
    dojo.require("dojox.grid.EnhancedGrid"); 
    dojo.require("dojox.grid.enhanced.plugins.IndirectSelection"); 
    dojo.require("dijit.form.Button"); 
    dojo.require("dojo.data.ItemFileReadStore"); 
    dojo.addOnLoad(function() { 
     dojo.parser.parse(); 
     loadGrid(dataGrid); 
    }); 

    function loadGrid(dataGrid) { 
     dojo.xhrGet({ 
      url: "${mydatasource}", 
      load: function(data, ioArgs) { 
       dataGrid.setStore(
         new dojo.data.ItemFileReadStore(
          {data: {items : data}}) 
       ); 
      }, 
      error: function(error) { 
       console.log("loading of grid data failed. Exception...", error); 
      } 
     }); 
    } 
</script> 
<util:panel id="titlePane" title="Course List"> 
    <div id="addButton" dojoType="dijit.form.Button"> 
     Add 
    </div> 
    <div id="deleteButton" dojoType="dijit.form.Button"> 
     Delete 
    </div> 

    <div id="grid" jsId="dataGrid" dojoType="dojox.grid.EnhancedGrid" 
     structure ="[ 
         { field: 'id', name: 'ID', width: '55px' }, 
         { field: 'firstName', name: 'First Name', width: '230px' }, 
         { field: 'lastName', name: 'Last Name', width: '50px' }, 
         { field: 'gender', name: 'Gender', width: '145px'} 
        ]" 
     autoWidth="true" 
     autoHeight="true" 
     plugins="{indirectSelection: true}" 
     selectionMode="single"> 
    </div> 
</util:panel> 

正如你所看到的,我通過由道場AJAX調用獲取JSON字符串。網格正在生成,但它沒有被填充數據。只有兩個複選框出現在網格中...

有什麼我做錯了嗎?

+2

你包括的數據網格所需的CSS?我似乎記得有一個類似的問題,當我忘了css一次 –

+0

css是一個問題...網格現在顯示...但仍然沒有數據填充在網格中..有關爲什麼我的任何建議網格沒有被填充? – pundit

回答

1

發現問題,網格不加載數據。

其實我需要將數據作爲Json字符串處理。

下面是工作代碼的副本:

<script type="text/javascript"> 
    dojo.require("dojo.parser"); 
    dojo.require("dojox.grid.EnhancedGrid"); 
    dojo.require("dojox.grid.enhanced.plugins.IndirectSelection"); 
    dojo.require("dijit.form.Button"); 
    dojo.require("dojo.data.ItemFileReadStore"); 
    dojo.addOnLoad(function() { 
     dojo.parser.parse(); 
     loadGrid(dataGrid); 
    }); 

    function loadGrid(dataGrid) { 
     dojo.xhrGet({ 
      url: "${mydatasource}", 
      handleAs: "json", 
      load: function(data, ioArgs) { 
       dataGrid.setStore(
         new dojo.data.ItemFileReadStore(
          {data: {items : data}}) 
       ); 
      }, 
      error: function(error) { 
       console.log("loading of grid data failed. Exception...", error); 
      } 
     }); 
    }   
</script> 
1

我從來沒有使用過增強網格,但對於一個常規網格,我通過聲明創建存儲區,將它的ID附加到網格(通過HTML中的store = ...屬性),然後當我想要用新的商店信息刷新網格,稱爲:

grid.setStore(...,null,null);