【发布时间】:2013-07-25 09:20:48
【问题描述】:
PrimeFaces 为 p:dataTable 提供了非常出色的过滤器。从 UX 站点来看它很棒,因为过滤器字段位于列标题中,所以毫无疑问您正在过滤什么,并且它正在实时工作 - 数据会随着您的输入而变化(好吧,只有当您短暂暂停时,但它在我的意见正是用户的期望)。
现在我想在标题中放置一些自定义内容作为过滤器。所以,我的想法是在 header facet 中放置一个组件:
<p:column ...>
<f:facet name="header">
<some:myComponent onkeydown="filterAction()"/>
</f:facet>
</p:column>
问题是filterAction不能更新整个dataTable组件(因为用户输入的组件会被重新创建),但它必须更新表体。
我认为我可以使用 PrimeFaces 选择器(基于 jQuery 选择器)来做到这一点,但根据主题 How to update data rows only using a selector for dataTable? 这是不可能的。并且 datatable.js 包含专门的 Ajax 调用来实现这一点(行:PrimeFaces 3.5 中的 839,发布):
options.onsuccess = function(responseXML) {
var xmlDoc = $(responseXML.documentElement),
updates = xmlDoc.find("update");
....
$this.tbody.html(content);
我的问题是,是否可以使用这种单独的过滤器组件,它只会刷新表体,就像它所做的标准过滤器一样,而不需要深入到 PF 内部并编写专门的 AJAX 处理程序?
当然,也可以在dataTable之外做filter,但是这样会减少UX(现在使用我的应用的人很喜欢现在的设计)。
【问题讨论】:
标签: jquery jsf-2 primefaces