2012-12-12 93 views
2

我正嘗試以編程方式創建Dojo dojox.grid.DataGrid。這是越來越創建,但不會顯示輸出,而是顯示了消息的錯誤:「對不起,發生了錯誤」以編程方式創建dojo datagrid「對不起,發生錯誤」

下面是代碼:

var info=[ 
     { 
      "Propery":"key1","Value":"value1"}, 
     { 
      "Property":"key2", "Value":"value2"}, 
     { 
      "Property":"key3","Value":"value3"} 
    ]; 

    var layout = [ 
     { 
      name: "Property", 
      field: 'Property', 
      width: "180px"}, 
     { 
      name: "Value", 
      field: 'Value', 
      width: "180px"} 
    ];  

    var myStore = new dojo.data.ItemFileReadStore({data:{items:info}}); 

    var grid = new dojox.grid.DataGrid({ 
      store: myStore, 
      structure: layout 
     },"myDiv");  

    grid.startup(); 

我不知道它在哪裏出錯了,請幫助我。

+0

現在,這是第三次,你告訴我們,你沒有得到正確的概念。我認爲讓你明白的唯一方法就是你發佈一個更有代表性的'對象'數組,用來填充網格。 – nozzleman

+0

好友我已經將我的json轉換爲對象數組,並且我是DOJO新手,如果您有解決方案,請告訴我 – user1838922

+0

希望它有幫助,其最後一次嘗試 – nozzleman

回答

1

老兄,這就像我第三次回答你的問題。它強烈地讓我想起了前兩個,但我會試試。

你舉的例子不能工作,因爲在你layout -variable,你指的是不data.itemsinfo)存在一個名爲field「財產」。

你也沒有得到json-array的概念。它可以表現爲一堆結構非常相似的物體。假設你想存儲一些人,那麼你會有一些像名字,姓氏,年齡,性別等keys每個人都會有不同的價值觀。該json - array看起來就像是:

var people = [ 
     { 
      firstname: 'maja', 
      lastname: 'van hinten' 
      age: 23 
      gender: 'w'}, 
     { 
      firstname: 'willy', 
      lastname: 'wantstoknowit' 
      age: 11 
      gender: 'm'}, 
     { 
      firstname: 'helmut', 
      lastname: 'kohl' 
      age: 101 
      gender: 'm'}, 
     ]; 

注意,該properties的名稱很相似,只是值不同。

您試圖做的顯然是,將一個object作爲array存儲,並使每個屬性爲object。想想看:[]意味着array,{}意味着object在JavaScript中。

事實上,你info -variable應該是這樣的:

var info = [ 
     { 
      "key1": "value1",  
      "key2": "value2",  
      "key3": "value3"} 
    ]; 

,如果你想存儲更多一些反對它應該是這樣的:

var info = [ 
     { 
      "key1": "value1",  
      "key2": "value2",  
      "key3": "value3"}, 
     { 
      "key1": "value4",  
      "key2": "value5",  
      "key3": "value6"}, 
     { 
      "key1": "value7",  
      "key2": "value8",  
      "key3": "value9"} 
    ]; 

... object存儲在array中。就那麼簡單。

現在你layout var

應該discribe你DataGridstructure有關其store給出的數據。所以它描述了整個列,而不是單個單元格。 因此,您只能引用屬性名稱(key1,key2,key3或名字,姓氏,年齡,性別),但不涉及這些值,因爲有時可能會有所不同。你只知道你的對象的結構,而不是它的實際內容。

因此,應該看起來像:

var layout = [ 
     { 
      name: "Key1's content", // you can name this whatever you want 
      field: 'key1',   // but not this, it refers to the property name of your objects 
      width: "180px"}, 
     { 
      name: "Key2's content", // this could be named randomly too of course 
      field: "key2", 
      width: "180px"}, 
     { 
      name: "Key3's content", // and that one as well 
      field: "key3", 
      width: "180px"} 
    ]; 
+0

謝謝,這真的很有幫助,但我的問題仍然沒有解決,我編輯它,它只顯示佈局,但不顯示信息的數據,它只顯示「抱歉,發生錯誤」,請看看和幫助我出 – user1838922

+0

包裝所有,但dojo.addOnLoad(函數(){/ *所有代碼在這裏* /})的'dojo.require(...)'語句'''在這[[小提琴] (http://jsfiddle.net/bvgcV/3/)。不幸的是,加載樣式表顯然有問題,但嘿! – nozzleman

+0

你也忘了設置'查詢'選項'DataGrid',但我不知道這是否可選(見小提琴) – nozzleman

0

不知道這是否會幫助,但在您發佈的示例代碼,你拼錯單詞「財產」在您的項目之一,而其他兩個項目有「財產」這個詞拼寫正確。參考帶有屬性鍵1的項目。您必須確保所有字段名稱拼寫一致。

相關問題