我正在使用primefaces v3.5。在我使用的數據表中,我在一列上使用了過濾器。 如何在加載頁面本身時將默認值設置爲過濾器。在primefaces數據表中設置默認值過濾器
回答
理想的情況下,獲得對數據表中的參考(或者是視圖數據表綁定到後臺bean表示或步行DOM樹),做這個
Map<String,String> theFilterValues = new HashMap<String,String>();
theFilterValues.put("filterColumn","fooValue");
myDataTable.setFilters(theFilterValues);
將設置一個默認的文本值,但可能不應用過濾器。
另外,this post在primefaces問題隊列提出了一種基於jQuery選擇
<script>
jQuery(document).ready(function() {
jQuery('input[id*="datumCol"]').val('2012-07-17');
});
</script>
使用在primefaces列標籤的filterValue財產,像
<p:datatable ... widgetVar="dataTableWidgetVar">
<p:column ... filterValue="#{BackingBean.defaultValue}">
然後,創建一個簡單的函數調用JavaScript來觸發過濾器,當頁面準備好時(通過jQuery中的PF創建小部件變量):
<script type="text/javascript" target="body">
$j = jQuery;
$j(document).ready(function() {
dataTableWidgetVar.filter();
});
</script>
正確的解決方案是使用p:dataTable
的filteredValue
屬性,該屬性包含已過濾的集合以及屬性p:column
以向用戶顯示過濾器配置。
爲了讓您的p:dataTable
過濾器保存在會話bean中,您還必須保留過濾的數據。 p:dataTable
不會爲您執行初始排序。
檢查這個例子的JSF:
<p:dataTable
value="#{usersBean.employees}"
var="e"
filteredValue="#{userListState.filteredValue}">
<p:ajax event="filter" listener="#{userListState.onFilterChange}"/>
<p:column
headerText="user"
filterBy="#{e.user.id}"
filterValue="#{userListState.filterState('user.id')}">
#{e.user.id}
</p:column>
</p:dataTable>
這個後盾託管bean:
@Named(value = "userListState")
@SessionScoped
public class UserListState implements Serializable{
private Map<String, String> filterState = new HashMap<String, String>();
private List<Employee> filteredValue;
public UserListState() {
}
public void onFilterChange(FilterEvent filterEvent) {
filterState = filterEvent.getFilters();
filteredValue =(List<Employee>) filterEvent.getData();
}
public String filterState(String column) {
return filterState.get(column);
}
public List<Employee> getFilteredValue() {
return filteredValue;
}
public void setFilteredValue(List<Employee> filteredValue) {
this.filteredValue = filteredValue;
}
}
best回答!應該這樣檢查。謝謝。 – dforce 2017-09-26 14:06:22
在實現LazyDataModel,我添加了一個默認的過濾器,在類的構造一類變量。在這個例子中,類變量被稱爲「過濾器」和濾波用值的「isActive」字段進行「真」:
public class ExtendedLazyListModel<T> extends LazyDataModel<T> {
private final List<T> datasource;
private Map<String, Object> filters;
public ExtendedLazyListModel(List<T> datasource) {
this.filters = new HashMap<>();
filters.put("isActive", "true");
this.datasource = datasource;
this.setRowCount(datasource.size());
}
然後在Load方法,我添加這個代碼設置默認過濾(僅針對第一呼叫):
public List<T> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
//set default filter
if (filters.isEmpty()){
for (Field f : datasource.get(0).getClass().getDeclaredFields()){
if (this.filters.containsKey(f.getName())) {
filters.put(f.getName(), this.filters.get(f.getName()));
this.filters.remove(f.getName());
}
}
}
.....
在本例中,我在XHTML文件到過濾p列中加入:柱...:
filterValue = 「真」 //是我爲默認過濾器設置的值
- 1. 使用Javascript來設置primefaces數據表中的默認過濾器
- 2. PHP過濾器擴展默認設置
- 3. jQuery的數據表過濾將加載默認設置
- 4. 根據動態過濾器爲腳手架表動態設置默認值
- 5. closedxml數據透視表報告過濾器默認值
- 6. primefaces - 數據過濾器
- 7. 在pentaho報表設計器中設置參數的默認值
- 8. Primefaces自定義數據表過濾器
- 9. 在dojo過濾選擇中設置默認值
- 10. 在數據表中設置選擇列表的默認值
- 11. 我怎樣才能爲ag-grid設置默認過濾器值
- 12. 無法給已過濾的表格設置默認值
- 13. 在Twig中設置默認原始過濾器
- 14. 在「數據驗證」下拉列表中設置默認值
- 15. 在數據表中爲NULL設置默認值
- 16. 設置默認表單值
- 17. CubeField?在數據透視表上設置過濾器值
- 18. 如何設置數據表過濾器等於數據透視表過濾器
- 19. Symfony中的過濾器 - 如何在列表中設置默認結果?
- 20. 在函數中設置默認值?
- 21. 設置默認值 - 回填數據庫
- 22. 動態設置數據集默認值
- 23. 數據綁定 - 設置默認值
- 24. 在報表設計器中設置默認值
- 25. 通過PostgreSQL將默認值設置爲數據庫中的列
- 26. 在primefaces數據表中設置寬度
- 27. 設置默認值[數字]
- 28. Kendo UI默認網格過濾器值
- 29. ActiveAdmin - 使用默認值過濾器
- 30. 如何在antd表組件上設置默認分類器和過濾器?
:通過這種方式,默認值是在過濾器值中設置的。但它不起作用 – Sagar 2013-03-18 06:47:10
@Sagar,哪一個不工作? Jquery或java位? – kolossus 2013-03-19 00:44:16
@kolussus:通過使用腳本函數我想獲得默認值。但是dataatable的加載方法沒有得到結果 – Sagar 2013-03-19 05:53:03