我正在使用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. 根据动态过滤器为脚手架表动态设置默认值
- 4. closedxml数据透视表报告过滤器默认值
- 5. 在dojo过滤选择中设置默认值
- 6. 在数据表中设置选择列表的默认值
- 7. 我怎样才能为ag-grid设置默认过滤器值
- 8. 无法给已过滤的表格设置默认值
- 9. 设置默认表单值
- 10. CubeField?在数据透视表上设置过滤器值
- 11. 如何设置数据表过滤器等于数据透视表过滤器
- 12. 数据绑定 - 设置默认值
- 13. 在报表设计器中设置默认值
- 14. 通过PostgreSQL将默认值设置为数据库中的列
- 15. Kendo UI默认网格过滤器值
- 16. 如何设置Primefaces LazyDataModel默认SortField
- 17. 如何在antd表组件上设置默认分类器和过滤器?
- 18. BotFramework在FormFlow中设置默认数据
- 19. 在jQuery Mobile中更改数据过滤器的默认行为
- 20. 在jqgrid中指定默认过滤器
- 21. Django设置默认数据
- 22. 如何在数据库中设置sqldatasource默认值在c#中?
- 23. 设置默认值
- 24. 设置默认值
- 25. 设置默认值
- 26. 设置默认值
- 27. 设置默认值
- 28. 设置默认值
- 29. 设置默认值
- 30. ActiveRecord:通过在表中设置默认值
:通过这种方式,默认值是在过滤器值中设置的。但它不起作用 – 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