2012-06-04 75 views
1

使用PrimeFaces Demo過濾DataTablehttp://www.primefaces.org/showcase/ui/datatableFiltering.jsf)爲例,我希望能夠在表格外提供「過濾」鏈接供用戶點擊(比如說沃爾沃,沃爾沃,寶馬等)。當用戶點擊鏈接時,我想切換製造商過濾器下拉菜單中的選定項目並應用過濾器。我一直無法弄清楚如何獲得過濾器屬性來進行更改。這可以通過javescript完成嗎?如何訪問選擇列表並設置當前選擇?如何以編程方式應用DataTable篩選器?

UPDATE:
繼丹尼爾的鏈接,我設法讓下拉選擇改變,但我無法得到過濾器適用。在過濾器基於輸入字段的列中,觸發鍵入會導致數據過濾,但我無法弄清楚在select上觸發什麼事件以使其過濾。以下是我正在使用的代碼:

<p:commandLink id="filterLink" 
    value="Click to filter to Volvo Only" 
    onclick="$('#carForm\\:dataTable\\:manufacturerColumn_filter').val('Volvo'), 
     $('#carForm\\:dataTable\\:manufacturerColumn_filter').trigger('filter')" 
/> 

上述創建的鏈接會將製造商過濾器切換到沃爾沃,但不會導致數據過濾。

+1

看看我的方法:http://stackoverflow.com/q/8776589/617373爲您的過濾器做同樣的... – Daniel

+0

感謝丹尼爾。這很有用,我可以像你展示的那樣應用全局過濾。我添加了一個更新,顯示我正在嘗試使用的代碼。我一直無法弄清楚事件是什麼,我需要觸發才能讓篩選發生在select上。 – SteveS

+0

不用客氣,b.t.w當你發現有人對你有用或者對你有用時,你應該點擊^(向上箭頭)按鈕(看他們的工具提示)......在這種情況下它們都是:) – Daniel

回答

0

關鍵是在表級調用過濾器事件。所以上面我的代碼應該適當地:

<p:commandLink id="filterLink" 
value="Click to filter to Volvo Only" 
onclick="$('#carForm\\:dataTable\\:manufacturerColumn_filter').val('Volvo'), carsTable.filter()" 
/> 
+0

不要忘記在輸入元素 –

+0

上觸發'keyup'在我的情況下,我想從表外部的commandlink中觸發過濾器,而不是從輸入元素觸發過濾器。 .filter()調用使表根據commandlink輸入的值進行過濾。 – SteveS

相關問題