2011-02-17 53 views
1

我無法弄清楚我需要做些什麼來動態加載ExtJS網格的列。我希望能夠將列標題作爲JSON發送,並讓網格獲取並生成所需的列。動態加載ExtJS的列

更具體地說,我想這個使用GroupingHeader插件做的,但我真的只是想弄清楚如何做到這一點沒有GroupingHeader插件首先增加了複雜性,然後我可以解決這個問題:)

下面是我對列標題一些示例JSON數據:

[ 
    { 
     "run_id":"110207gad", 
     "iterations":[ 
      "1_14", 
      "2_16", 
      "3_18", 
      "4_20", 
      "5_22" 
     ] 
    },{ 
     "run_id":"110207gae", 
     "iterations":[ 
      "1_14", 
      "2_16", 
      "3_18", 
      "4_20", 
      "5_22" 
     ] 
    } 
] 

這是我需要做的分組,其中run_id將分組報頭中的數據和iterations將是列標題。現在,我很高興能夠將iterations顯示爲列,然後我可以開始讓分組工作。

如果任何人都可以指引我正確的方向或給我一些提示從哪裏開始,那將非常有幫助!我並沒有超越我自己的想法,但我只需要一點點啓動,因爲我似乎無法從查看ExtJS示例和執行一些Google搜索中找到答案。

回答

1

我建議你看一下ExtJS例子的源代碼。

http://dev.sencha.com/deploy/dev/examples/grid/array-grid.js

它應該給你的信息有相當多上手。

您可以從這種格式開始,從你的服務器傳遞:

{"success":true,"message":"Loaded data","data":[{"run_id":1,"iterations":"1"},{"run_id":2,"iterations":"2"},{"run_id":3,"iterations":"3"}]}

那麼你的讀者會是這樣的:

var reader = new Ext.data.JsonReader({ 
    totalProperty: 'total', 
    successProperty: 'success', 
    idProperty: 'run_id', 
    root: 'data', 
    messageProperty: 'message' 
}, [ 
    {name: 'run_id'}, 
    {name: 'iterations', allowBlank: false} 
]); 
+0

這個例子顯示瞭如何創建一個簡單的網格無從服務器加載數據。要從服務器加載數據,您需要'Ext.data.JsonStore'和'Ext.data.JsonReader'。您可以查看文檔http://dev.sencha.com/deploy/dev/docs/下的Ext> data> JSONStore部分。希望這可以幫助。 – Rafal

+0

我可以使用數組創建一個,但通過將PHP代碼注入JavaScript來「構建」數組,這樣做並不是很優雅。我一直在做一些與JSONStore示例相關的工作,但並不真正瞭解我的JSON數據如何進行格式化,使其像我想動態生成列一樣工作。感謝您的信息! – Jared

+0

@Jared我更新了一些關於定義結構的技巧,在這個例子中可以檢查使用JSON的代碼。使用Firebug,您可以看到從服務器傳遞的JSON字符串。 http://dev.sencha.com/deploy/dev/examples/writer/writer.js – Rafal