在primefaces数据表中排序

我正在使用primefaces数据表示在UI中显示我的数据。 众所周知,我们可以在数据表本身进行排序和过滤。 但是,当我在数据表排序字段中键入单个字符时,它开始搜索数据,我不需要它。 只有当用户在字段中输入至少3个字符时,我才需要搜索数据。 有没有可能做到这一点..? 如果真是这样,那么是以哪种方式? 请提供您的意见。

提前致谢。


我对Primefaces的数据表做了一个小调查,这是我的发现。

实际上,重新编译并不是必须的,也可以使用源代码。

您需要为过滤器事件注册新的处理程序,而不是由Primefaces提供的处理程序。

在这种情况下,数据表格将如下使用:

<h:outputScript name="js/customprimefacestable.js" target="body"/>

<p:dataTable var="data" value="#{filterBean.data}" filteredValue="#{filterBean.filteredData}" widgetVar="tableWidget">
    <p:column filterBy="#{data.name}" headerText="Name" filterMatchMode="contains">
        <h:outputText value="#{data.name}" />
    </p:column>
    <p:column filterBy="#{data.value}" headerText="Value" filterMatchMode="contains">
        <h:outputText value="#{data.value}" />
    </p:column>
    ...
</p:dataTable>

而JavaScript将是这样的:

$(document).ready(function() {
    tableWidget.thead.find('> tr > th.ui-filter-column > .ui-column-filter').each(function() {
        var filter = $(this);
        if(filter.is('input:text')) {
            if(tableWidget.cfg.filterEvent!="enter"){
                //unbind current handler
                filter.unbind(tableWidget.cfg.filterEvent);
                //bind new handler that accounts for conditional filtering
                filter.bind(tableWidget.cfg.filterEvent, function(c) {
                    if(filter.val().length > 3) {
                        //Primefaces 3.5 implementation
                        if(tableWidget.filterTimeout){
                            clearTimeout(tableWidget.filterTimeout);
                        }
                        tableWidget.filterTimeout=setTimeout(function(){
                            tableWidget.filter();
                            tableWidget.filterTimeout=null},
                        tableWidget.cfg.filterDelay);
                    }
                });
            }
        }
    });
});

注意事项

  • target="body" :JavaScript不能在<head>执行,因为Primefaces在$(document).ready()初始化它的小部件变量,所以不能保证你的函数在Primefaces初始化完成后执行地点;
  • 由于筛选开始时在列的搜索框中输入了至少4个字符(完成),因此当用户将文本删除至4个字符以下时(未完成),您应该还原未筛选的视图;
  • 上面的解决方案针对Primefaces 3.5 <p:dataTable> 。 Primefaces实现因版本而异,因此请务必查看您正在使用的版本的实施情况,或升级到版本3.5;
  • 不包括输入字段呈现为下拉框的过滤事件的实现;
  • 该表将听取默认( keyup )事件。
  • 链接地址: http://www.djcxy.com/p/69777.html

    上一篇: Sorting in primefaces datatable

    下一篇: C++ Contiguous Sequence Concept