0 Replies Latest reply on May 15, 2008 9:50 AM by Robert Stone

    scrollingDataTable questions

    Robert Stone Newbie

      I really like to use scrollingDataTable in my project, but so far the only successful thing I can achieve is to display first portion of data. Here's short list of what I wasn't able to do:
      I can't scroll data. Scrolling starts and then table renders itself empty. Scrolling back does not bring back the data
      Action on click/doubleclick works only on empty row. When I click on row with data I can see AJAX request but the action code is never fired. There's no warnings/messages anywhere (including rich:messages) that would give me any hint
      When attempting to extend data model - walk() is never called so it's useless for scrolling. Plus I had to provide implementation for setRowIndex which should never be called but is called extensively
      I map rows to a custom object that has a compound key (another object). Attempt to provide row converter filed since SDT uses it's own org.richfaces.model.ScrollableTableDataModel$SimpleRowKey as a key
      Don't know which scope I should use for the backing bean? I like to use request, but changing to session doesn't change anything, and if I try to put a4j:keepAlive the table would simply refuse to render

      Here's the table. #{deviceMasterFormBean.searchResultModel} is a list of POJOs

      <f:subview xmlns="http://www.w3.org/1999/xhtml"
       xmlns:ui="http://java.sun.com/jsf/facelets"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
       xmlns:a4j="http://richfaces.org/a4j"
       xmlns:rich="http://richfaces.org/rich">
       <rich:panel id="searchResultPanel" binding="#{deviceMasterFormBean.searchResultPanel}"
       rendered="true">
       <f:facet name="header">Device search results</f:facet>
       <rich:scrollableDataTable value="#{deviceMasterFormBean.searchResultModel}"
       var="device" height="150px" width="100%" first="0" rows="20"
       onRowMouseOver="this.style.backgroundColor='#F8F8F8'"
       onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'" rowClasses="cur">
       <rich:column width="150px">
       <f:facet name="header">
       <h:outputText value="Tag #" />
       </f:facet>
       <h:outputText value="#{device.tagNumber}" />
       </rich:column>
       <rich:column width="150px">
       <f:facet name="header">
       <h:outputText value="IP" />
       </f:facet>
       <h:outputText value="#{device.ip}" />
       </rich:column>
       <rich:column width="200px">
       <f:facet name="header">
       <h:outputText value="Hostname" />
       </f:facet>
       <h:outputText value="#{device.name}" />
       </rich:column>
       <rich:column width="200px">
       <f:facet name="header">
       <h:outputText value="Domain" />
       </f:facet>
       <h:outputText value="#{device.domainName}" />
       </rich:column>
       <rich:column width="200px">
       <f:facet name="header">
       <h:outputText value="Namespace" />
       </f:facet>
       <h:outputText value="#{device.namespace}" />
       </rich:column>
       <a4j:support event="onRowDblClick" actionListener="#{deviceMasterFormBean.onSelectSearchResult}"
       ajaxSingle="true" reRender="searchTogglePanel,updateControls,deviceTabs"/>
       </rich:scrollableDataTable>
       <rich:toggleControl switchToState="step1" value="Back to Search" />
       </rich:panel>
      </f:subview>