1

当用户使用DataList上的 Paginator 单击页面时,我试图捕获 Page 事件。用户指南没有提到这个组件的任何 Ajax 行为,但我还是尝试<p:ajax event="page">了,发现不支持事件“页面”。

DataList有可用的事件吗?如果没有,有没有人知道如何将每个页面保存为用户页面?

谢谢 :) 尼尔

4

2 回答 2

1

preRenderComponent您可以使用 datalist 上的通用事件挂钩组件的渲染生命周期(每次分页操作都会重新渲染组件) 。只需将以下内容添加到您的数据列表中:

   <p:dataList>
      <f:event type="preRenderComponent" listener="#{yourBean.operation}"/>
   </p:dataList>
于 2013-02-02T14:20:27.733 回答
0

如果您单击页面链接,则可以覆盖标准的 PrimeFaces javascript 函数。从那里你可以调用 remoteCommand 或任何你想要的......

我知道这不是最佳做法,而是一种可能性;)

PrimeFaces.widget.Paginator.prototype.bindPageLinkEvents = function(){

  var $this = this;

  this.pagesContainer.children('.ui-paginator-page').on('click.paginator', function(e) {
    var link = $(this);

    if(!link.hasClass('ui-state-disabled')&&!link.hasClass('ui-state-active')) {
      $this.setPage(parseInt(link.text()) - 1);
    }

    // your code goes here

  })
  .on('mouseover.paginator', function() {
    var item = $(this);
    if(!item.hasClass('ui-state-disabled')&&!item.hasClass('ui-state-active')) {
      item.addClass('ui-state-hover');
    }
  })
  .on('mouseout.paginator', function() {
    $(this).removeClass('ui-state-hover');
  })
  .on('focus.paginator', function() {
    $(this).addClass('ui-state-focus');
  })
  .on('blur.paginator', function() {
    $(this).removeClass('ui-state-focus');
  })
  .on('keydown.paginator', function(e) {
    var key = e.which,
        keyCode = $.ui.keyCode;

    if((key === keyCode.ENTER||key === keyCode.NUMPAD_ENTER)) {
      $(this).trigger('click');
      e.preventDefault();
    }
  });
};

或者看看这个答案。我非常喜欢它! https://stackoverflow.com/a/25930991/2265727

于 2015-01-13T17:21:39.103 回答