2010-05-25 49 views
0

我想要一個Dojo dojox.grid.DataGrid及其來自servlet的數據。dojox.grid.DataGrid從Servlet填充

問題:從servlet返回的數據沒有得到顯示,只是消息「對不起,發生了錯誤」。

如果我只是把JSON字符串到HTML,它的工作原理。 ARRRRGGH。

誰能幫幫我吧!

感謝 傑夫·波特

servlet代碼...

public void doGet(HttpServletRequest req, HttpServletResponse resp) { 
    res.setContentType("json"); 
    PrintWriter pw = new PrintWriter(res.getOutputStream()); 
    if (response != null) pw.println("[{'batchId':'2001','batchRef':'146'}]"); 
    pw.close(); 
} 

HTML代碼...

<div id="gridDD" dojoType="dojox.grid.DataGrid" 
    jsId="gridDD" style="height: 600x; width: 100%;" 
    store="ddInfo" structure="layoutHtmlTableDDDeltaSets"> 
    </div>  

    var rawdataDDInfo = ""; // empty at start 
    ddInfo = new dojo.data.ItemFileWriteStore({ 
     data: { 
      identifier: 'batchId', 
      label: 'batchId', 
      items: rawdataDDInfo 
     } 
    }); 
    <script> 
    function doSelectBatchsAfterDate() { 
    var xhrArgs = { 
     url: "../secure/jsonServlet", 
     handleAs: "json", 
     preventCache: true, 
     load: function(data) { 
     var xx =dojo.toJson(data); 
      var ddInfoX = new dojo.data.ItemFileWriteStore({data: xx}); 
      dijit.byId('gridDD').setStore(ddInfoX); 
     }, 
     error: function(error) { 
       alert("error:" + error); 
     } 
    } 

    //Call the asynchronous xhrGet 
    var deferred = dojo.xhrGet(xhrArgs); 
    } 
    </script> 
<img src="go.gif" onclick="doSelectBatchsAfterDate();"/> 

回答

0

當使用JSON數據從服務器返回創建dojo.data.ItemFileWriteStore。您只需提供項目,您仍然需要指定元數據。正確的代碼應該如下。

var ddInfoX = new dojo.data.ItemFileWriteStore({ 
    data: { 
     identifier: 'batchId', 
     label: 'batchId', 
     items: xx 
    } 
}); 

而且您不需要將JSON對象轉換爲JSON字符串的dojo.toJson函數。 dojo.data.ItemFileWriteStore需要JSON對象作爲參數,而不是JSON字符串。

+0

看到這個答案 http://stackoverflow.com/questions/2874611/itemfilewritestore-how-to-change-the-data – 2010-06-02 09:26:54