2014-03-04 15 views
0

我有一個網格,其中包含每行的操作列。這個動作欄是一個編輯圖標,當用戶點擊編輯圖標時,我將啓動一些websocket事件,最終將流向目前連接到應用程序的其他用戶。我想要做的是灰掉其他用戶的這個編輯圖標。所有這些代碼正在工作,除了:我不知道如何訪問實際行的操作列對象。Ext JS:獲取特定行的操作列

我可以利用網格的視圖,並抓住個別節點,然後設置某種CSS的,像這樣訪問:

var rowHtml = this.getView().getNode(index); 
if (rowHtml) { 
    var rowDom = Ext.fly(rowHtml); 
    if (rowDom) { 
    rowDom.down('.someclass').removeCls('enabled').addCls('disabled'); 
    } 
} 

這應該工作,但是我也想更新的提示,一般來說,我只是想能夠訪問這個元素。

所以,我想主要的問題是,當這個動作列被創建時,它被創建爲一個按鈕或其他一些Ext JS元素?該API指出defaultType子組件是網格列,但我想這不是什麼這個動作專欄真的是什麼?另外,有沒有一種簡單的方式作爲Ext JS類來訪問這個項目?

編輯:我曾看到下面的線程,但它們更多處理渲染......我行已經呈現行:

Hide Icon in Action Column for Particular Row

How to Disable Action Column Item for a Single Row

回答

0

我已經決定不要刪除和增加一個班級。目前,我正在做上述類似的方式,但這樣的:

var rowHtml = this.getView().getNode(index); 
if (rowHtml) { 
    var rowDom = Ext.fly(rowHtml); 
    if (rowDom) { 
    rowDom.down('.someclass').hide(); // or show, based on some other logic 
    } 
} 

我去隱藏/顯示,因爲如果我只是編輯的CSS,仍可點擊操作圖標。通過隱藏/顯示,我們擺脫了這種可能性。這並不理想,但它的作用很快。

+0

因此,我的解決方案唯一的問題是,隱藏不會保持設置,如果視圖刷新...我試過使用'Ext.get'而不是'Ext.fly',但無論如何,當視圖刷新,圖標顯示備份......我需要發生的是當我使用hide方法時圖標的HTML被設置,因此當視圖刷新時,它會將HTML視爲隱藏。有什麼建議麼? – incutonez

+0

我最終放棄了這種方法,並對ActionColumn的[items]使用'getClass'方法(http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.grid.column.Action -cfg項)。相關我的[其他問題](http://stackoverflow.com/questions/22229168/ext-js-saving-dom-manipulation-of-a-grid-row/22229919#22229919)。 – incutonez