2011-03-11 96 views
1

可以說我有2列的GridPanel:姓名和薪水,該店鋪的dataIndex具有相同的名稱ExtJS的條件呈現列

在ExtJS的,渲染器的功能是這樣的:

function(value, metaData, record, rowIndex, colIndex, store){} 

現在,當我根據proeprty的名稱調用rander時,如果我希望做不同的渲染,我該如何去做呢? e,g。

function(value, metaData, record, rowIndex, colIndex, store){ 
if (record.name == 'Salary'|| record.id == 'Salary') 
{ 
//render logic 
} 
else if (record.name == 'Name'|| record.id == 'Name'){ 
    //different render logic 
} 
} 

這是什麼正確的語法?

回答

1

那麼,從句法上來說這是正確的。但if語句中的條件不正確。 value變量保存正在呈現的值,所以如果您需要檢查它是否應該相當簡單,如果條件。

在你的情況下你試圖渲染薪水或名字? record變量保存整個記錄。沒有record.name字段。記錄對象包含以下字段:

  1. data - >是一個帶有數據的對象。 (使用應該使用此)
  2. id - >記錄的Id。這是由idProperty在您的商店指定
  3. JSON - > JSON格式的數據
  4. 店 - >您的商店本身
  5. - >原型

所以,如果你在做任何比較並檢查你將需要使用record.data.<property-name>

你的情況,你有兩個名字和工資單dataIndex,所以代碼將是:

function(value, metaData, record, rowIndex, colIndex, store) { 

    if(record.data.property == Name) { 
      //render logic for name 
    } 
    else if(record.data.property == Salary) { 
      // render logic for salary 
    } 
} 

最後,這一功能將進入色譜柱的渲染性能。

+0

應該是:record.data.property =='Name'? (引號或沒有引號) – Victor 2011-03-12 06:20:29

+0

我只是提出一個示例條件。它應該根據你的邏輯。如果你正在檢查字符串'名稱',那麼它應該在引號中。 – 2011-03-12 06:22:59