我正在使用Ext.js 5 web應用程序。我有一個Ext.grid.Panel,我有如何以編程方式設置列過濾器?
selModel: {
type: 'spreadsheet'
},
這裏是什麼,我現在有一個屏幕截圖:
我想可以設置過濾器上'狀態'欄改爲'就緒'。我不知道我需要做什麼。
謝謝!
更新:感謝德雷克指出我在正確的方向。我需要做的是添加此代碼...
1 /*global */
2 Ext.define("Requestor.view.main.RequestGrid", {
3 extend: 'Ext.grid.Panel', // Our base class. A grid panel.
...
42 // Here we define our grid columns based on our associated store and model.
43 columns: [
...
72 {
73 text: 'Status',
74 dataIndex: 'status',
75 itemId: 'status',
76 renderer: function(value, metaData) {
77 //RED
78 var filter = this.up('panel').down('#status').filter;
79 if (!filter.menu) {
80 filter.createMenu();
81 filter.menu
82 .down('menuitem[value="Ready"]')
83 .setChecked(true);
84 }
85 //RED
86 metaData.tdStyle = (value == 'Ready') ?
87 'color:green;font-weight: bold' :
88 'color:red;font-style: italic'
89 return(value)
90 },
91 filter: 'list',
92 flex: 1,
93 },
看起來你已經有了['list'](http://docs.sencha.com/extjs/5.1/ 5.1.1-apidocs /#!/ api/Ext.grid.filters.filter.List)過濾器已經應用到Status列,那麼通過點擊4個複選框中的一個來設置*它有什麼問題?或者你是否需要通過編程來完成?或者是什麼? – Greendrake
如何以編程方式設置列過濾器?所以,是的,我需要通過編程來完成。 –
哈哈,我只是沒有在你的問題的主體中看到*編程*這個詞 - 它只在我的雷達錯過的標題中:) 我很高興我的回答很有幫助,而且你似乎很高興與您的解決方案。雖然看起來,你正在'renderer'列進行過濾器檢查。這將被稱爲**在網格中的每個**行,你看?我想你不想那樣。如果你需要在渲染網格後立即設置過濾器,那麼在'afterrender'事件處理器中檢查過濾器會更合適。 – Greendrake