2012-06-14 59 views
1

我是YUI的新手,需要一些幫助。
帶有JSON對象的YUI DataTable嵌套列與未知鍵

我有這樣的JSON響應:

{ 
    "Results":[ 
     { 
      "alpha":57.935, 
      "beta:{ 
       "delta":2.975, 
       "omega":1.431 
      }, 
      "gamma":{ 
       "theta":"0.339", 
       "lambda":"1.195" 
      } 
     }, 
     { 
      "alpha":87, 
      "beta":{ 
       "lambda":2.680, 
       "kappa":0.714 
      }, 
      "gamma":{ 
       "zeta":"0.288", 
       "epsilon":"0.289" 
      } 
     } 
    ] 
} 

我想有使用嵌套列,其中一個數據表:
1)α,β和γ是父列。
2)beta和gamma每個都有兩個由JSON鍵值對組成的列(例如,delta => 2.975)。
3)行數,即總鍵值對,是動態的。

基本上是這樣的:

---------------------------------------------- 
    | alpha |  beta  |  gamma  | 
    ---------------------------------------------- 
    | 57.935 | delta | 2.975 | theta | 0.339 | 
    ---------------------------------------------- 
    |   | omega | 1.431 | lambda | 1.195 | 
    ---------------------------------------------- 
    | 87.435 | lambda | 2.680 | zeta | 0.288 | 
    ---------------------------------------------- 
    |   | kappa | 0.714 | epsilon | 0.289 | 
    ---------------------------------------------- 

我已經能夠產生非嵌套的,簡單的JSON響應。

我的問題:
1)我有每個JSON子對象({theta:0.339}等)。兩個子列都需要來自同一個對象的數據。如何在不修改的情況下使用它?我應該爲myColumnDefs中的兩個子列使用相同的'keyName'嗎?
2)如何創建alpha td爲空的多行?

任何幫助將不勝感激!

回答

1

這不是一個容易解決的問題。除了在將JSON發送到客戶端之前將其格式化爲單獨行的能力外,可以通過將一些列配置,格式化程序和定製的bodyView modelList屬性設置器整合在一起,從而使數據變平顯示。 http://jsbin.com/3/efigim/1/edit?javascript,live

這可能會涉及到錶行 - >數據記錄關聯的一些破壞,因爲bodyView的modelList包含它自己的行的模型,而不是共享clientId。這可能會或可能不會妨礙您的工作,具體取決於您是否需要其他功能。

但是,由於DataTable的數據ModelList爲beta和gamma值保留對象 - 只有視圖的表示是自定義的,所以您可能沒有問題。

YMMV,HTH

+0

謝謝!這很快,太棒了!正如我所說,我是一名初學者,無法快速掌握YUI數據表中使用的所有方法/函數。爲了讓自己變得更容易,我將JSON數據拼合成固定寬度(列)的行,併爲每個字段插入鍵。需要YUI 101! – Wilderness