2014-11-23 134 views
1

我正在使用primefaces 5.0和datatable with filter選項。但鍵入一個字母並等待它過濾並更新然後輸入下一個字母是不方便的。這也降低了服務器的速度。因此,填充過濾器選項後需要按回車鍵,然後進行過濾。Primefaces dataTable filter on enter

有在primefaces 3.5 filterDelay選擇,但我不以primefaces 5

我使用的JavaScript代碼破解看到如下

$('th .ui-column-filter').each(function() { 
         var inp = $(this); 
         inp.unbind('keydown'); 
         inp.unbind('keyup'); 
         inp.unbind('keypress'); 
         inp.keypress(function(event) { 
          if (event.keyCode == 13) { 
           alert("entered"); 
           event.stopPropagation(); 
           gwsReportAllPartListDataTable.filter(); 
           return false; 
          } 
         }); 
        }); 

那麼,它沒有工作。

我如何使用primefaces 5做到這一點?

+0

你的桌子上有多個過濾器選項嗎?您可以結合primefaces的熱鍵和globalFilter屬性來篩選返回 – kolossus 2014-11-24 02:41:12

+0

是的。 19列以上有19個過濾器。我拒絕使用過濾器。許多事情都失控了。因此,只需將inputText添加到列標題中,並在用戶在intputtext中按Enter鍵時提交隱藏按鈕。 – jakentus 2014-11-24 06:33:34

回答

0

5.2 Userguide (Chapter 3.32)還有在DataTable中一個filterDelay選項。它不適合你嗎?

從2011年4月7日起,BalusC在他的博客「How to filter p:dataTable on enter event」中發佈了一個非常類似的解決方案。也許你可以從那裏改寫一些東西。

+0

您鏈接到[由Oleg Varaksin創建的博客](http://ovaraksin.blogspot.de/2011/04/how-to-filter-pdatatable-on-enter-event.html)作爲BalusC的。你讀過博客了嗎? – kolossus 2014-11-24 02:24:30

+0

嗯,這篇文章已經很老了,許多修改後的新版本都在這篇文章之後發佈。沒有filterEvent選項了。謝謝 :) – jakentus 2014-11-24 07:07:56

3

按照PrimeFaces用戶指南(5.0和5.1),還有就是選擇filterEvent = 「...」,也filterDelay = 「...」

名稱:filterEvent,默認:鍵入,類型:字符串,說明:要調用輸入過濾器的篩選的事件。 名稱:filterDelay,默認:,類型:整數,說明:延遲以毫秒爲發送Ajax過濾器查詢之前。

兩種選擇對標籤號碼:dataTable的

一兩個應該解決您的問題,我猜。 (延遲選項,如果您願意更改爲列上的篩選器,或者另一方面仍然存在filterEvent選項)。