2012-03-03 70 views
5

我有一個Ext JS的網格象下面這樣:Ext JS的電網

var grid = new Ext.grid.GridPanel({ 
columns: [ 
{header: 'Account Id',dataIndex:'accountId' }, 
{header: 'Account NUmber',dataIndex:'accountNumber' } 
] 
}) 

現在我需要顯示賬戶ID列單選按鈕的一列。所以從網格用戶可以選擇一個帳戶ID並提交。當用戶重新加載頁面時,應該預先選擇該帳戶ID。

我需要一些幫助,瞭解如何進行此操作。我是否需要在Account Id列上編寫渲染器?或者有更簡單的方法。

編輯:我確實是這樣的:

{header: 'Account Id',dataIndex:'accountId',renderer: function(value) { 
return "<input type='radio' name = 'primaryRadio' " + (value ? "checked='checked'" : "") + ">"; 
}}, 

什麼是添加一個onclick事件或onchange事件到無線電集團的語法?

+1

您可以發佈它作爲一個答案,所以我可以接受:) – Victor 2012-03-03 06:28:02

+0

我只是做了?謝謝! – 2012-03-03 10:20:36

回答

3

通過使用渲染器函數,您可以很好地將Account Id列顯示爲單選按鈕列。

關於這些onclick事件,你可以簡單地添加onclick屬性的HTML標籤:

return "<input onclick='my_function()' type='radio' name = 'primaryRadio' " + (value ? "checked='checked'" : "") + ">"; 
8

建設掉以前的答案,是的,我想用渲染你的列是正確的解決方案。我認爲你應該去點擊事件比J.布魯尼建議的不同。我建議你的網格面板上的點擊監聽器檢查你是否點擊了一個單選按鈕,並委託給GridPanel中的一個方法。

事情是這樣的:

MyRadioGrid = Ext.extend(Ext.grid.GridPanel, { 
    columns: [ 
     {header: 'Account Id',dataIndex:'accountId', renderer: function(value) { 
      return "<input type='radio' name = 'primaryRadio' " + (value ? "checked='checked'" : "") + ">"; 
     }}, 
     {header: 'Account NUmber',dataIndex:'accountNumber' } 
    ], 

    afterRender: function() { 
     MyRadioGrid.superclass.afterRender.apply(this, arguments); 
     this.el.on('click', this.checkRadioClick, this); 
    }, 

    checkRadioClick: function(event) { 
     if (event.getTarget('input[type="radio"]')) { 
      //radio clicked... do something 
     } 
    } 
}); 
+0

+1這比在每個元素中設置「onclick」更好。它只是看起來有點冗長......我們有一個更短的/更清晰的方式來附加事件處理程序嗎? ('click','input [type =「radio」]',callback);'或$('input.account_id')。click(callback);' (假設我們爲輸入添加了一個'account_id'類)... – 2012-03-06 11:07:54

+0

是的,jQuery用很少的代碼做了很多:)。在這個例子中,儘管並且通常使用Ext,最好將業務組件封裝爲擴展Ext組件的類,這是我上面編寫的大部分代碼。較短的版本,沒有創建一個完整的類,就像'myGrid.el.on('click',functionToCheckForRadio)',然後你仍然需要'event.getTarget'邏輯。我不知道基於點擊目標過濾事件的Ext中有沒有更簡單的方法,儘管這聽起來像一個很好的擴展! – 2012-03-07 01:30:16