在DataTable换页的时候绑定一个事件Primefaces 2.2

问题:

现在项目里有个需求就是希望当datatable(Primefaces)换页的时候触发一个event.

解决方案:

定义这个datatable的widgetVar为:dataTableVar。然后添加如下一段JS。

1 dataTableVar.getPaginator().on( 'pageChange', function () { alert('paging'); } );

解决过程:

本来,是想通过给datatable中所有class带有ui-paginator的a标签bind一个click事件。但是,当这个datatable的每次都换页的时候都必须要重新执行这块JS。这必然存在效率问题,并且稳定性很差(因为有的时候就是bind不上去)。

 1 function bindClickToPagingButton(id) {
 2     var dataTableId = PrimeFaces.escapeClientId(id);
 3     jQuery(dataTableId).ready(function() {
 4         jQuery(" a[class*='ui-paginator']").each(function() {
 5             jQuery(this).unbind();
 6             jQuery(this).bind("click", function() {
 7                 alert('click');
 8             });
 9         });
10 
11     });
12 }

所以,我决定要换种方式,然后通过查看Primfaces2.2 的datatable JS发现它的paginator组件用的YUI的paginator widget。当换页的时候会触发一个pageChange的事件。所以问题就迎刃而解了。

深入一点,往往可以使问题更简单,学到的也更多。

posted on 2013-02-28 12:52  鱼冻  阅读(801)  评论(0)    收藏  举报

导航