我目前有一個相當大的網格,並且正在成功使用RowExpander插件來顯示特定行上的補充信息。我的問題是,並非所有行都包含上述補充信息,我不希望RowExpander處於活動狀態,並且如果特定數據存儲區條目爲空,則不會顯示它爲「+」圖標。我嘗試在RowExpander對象上使用傳統的「渲染器」屬性,但它不起作用。ExtJS顯示只有條件的RowExpander
所以基本上,你怎麼能有RowExpander的圖標和雙擊顯示和激活只有當某個數據存儲的字段!=「」?
在此先感謝! =)
編輯:我找到了解決辦法
由於電子鋅說,它的解決方案的一部分(至少對我來說)是提供一個自定義的渲染器會檢查我的條件字段。這裏是我的RowExpander:
this.rowExpander = new Ext.ux.grid.RowExpander({
tpl: ...
renderer: function(v, p, record) {
if (record.get('listeRetourChaqueJour') != "") {
p.cellAttr = 'rowspan="2"';
return '<div class="x-grid3-row-expander"></div>';
} else {
p.id = '';
return ' ';
}
},
expandOnEnter: false,
expandOnDblClick: false
});
現在,這裏的技巧是,對於這個特殊的網格,我選擇不允許,因爲RowExpander的expandOnEnter和expanOnDblClick有時可能不會被渲染。此外,將包含「+」圖標的網格單元的CSS類是'x-grid3-td-expander'。這是由CSS類自動設置爲x-grid3-td- [id-of-column]引起的。因此,只有當我不渲染rowExpander時,纔將id設置爲「'',同時我也刪除了未渲染單元格的灰色背景。所以,沒有雙擊,沒有輸入,沒有圖標,沒有灰色背景。它真的變得好像沒有任何RowExpander涉及我的數據存儲區域爲空的列(當我不需要RowExpander時)。
這對我來說訣竅。對於希望保留單元ID的用戶,或者希望保持雙擊並輸入事件的人,除了擴展我認爲的類外,沒有別的辦法可做。希望這能幫助其他人堅持我的立場!
你使用Ext.override還是創建了一個新類並擴展了RowExpander插件?我聽說使用Ext.override會導致您的覆蓋函數影響您修改的對象的所有實例,這意味着每個RowExpander實例都會受到影響...而這不是我正在尋找的。所以我的猜測是,將它擴展到一個新班級是要走的路。你最終做了什麼? – 2012-02-03 16:33:29
哦,我看到你在那裏做了什麼!我使用與rederer屬性相同的東西,但RowExpander仍然添加了CSS類x-grid3-td-expander,它具有我不想要的灰色背景。確實,提供渲染器並不會刪除「+」圖標,但它仍將灰色背景css類保留爲。 – 2012-02-03 16:37:05
@ Jean-Francois Hamelin另外我有CSS修復:.x-grid3-td-expander {background-image:none!important; } – 2012-02-03 16:49:06