8 Replies Latest reply: Jul 2, 2013 1:08 AM by Frank Nimphius-Oracle RSS

    NO VERTICAL SCROLL BAR TO TABLE WHEN THE TABLE HAS HUGE NUMBER OF ROWS

    user9942600
      Hi,
      I have a af:table and i am retrieving and displaying all rows from the database. My database has 1.3million records. When i launch the application vertical scroll bar is not appearing to the table.

      What is the max. limit of table rows?


      Regards,
      Raghu.
        • 1. Re: NO VERTICAL SCROLL BAR TO TABLE WHEN THE TABLE HAS HUGE NUMBER OF ROWS
          Timo Hahn
          Calm down, tell us more about your environment (jdve version, UI technology) and share some code how your table is set up in the page.

          Timo
          • 2. Re: NO VERTICAL SCROLL BAR TO TABLE WHEN THE TABLE HAS HUGE NUMBER OF ROWS
            John Stegeman
            Raghu,

            A few thoughts:

            1). You don't say what version of JDeveloper you're using.

            2). You want to show your user 1.3 million records?!? Your users must haev an amazing brain capacity if they can scroll through and make sense of that many records :)

            3). I tried this in JDeveloper 11g (11.1.1.2.0) with a table with that many records, and it worked fine. I got bored wating to scroll with that many records, though.


            John
            • 3. Re: NO VERTICAL SCROLL BAR TO TABLE WHEN THE TABLE HAS HUGE NUMBER OF ROWS
              user9942600
              Here are the details:

              JDeveloper version : Studio Edition Version 11.1.1.2.0, Build JDEVADF_11.1.1.2.0_GENERIC_091029.2229.5536 (Jdeveloper 8 Build 2 PS1)

              Java(TM) Platform     1.6.0_14
              Oracle IDE     11.1.1.2.36.55.36
              Versioning Support     11.1.1.2.36.55.36

              WebLogic Server Version: 10.3.2.0
              Database : Oracle 11g.

              Table Code:
              <af:table value="#{bindings.searchResultsIterator.dataControl.dataProvider.collectionModel}" id="rsltTb"
              var="row" rowSelection="multiple" width="100%" rows="#{bindings.searchResults.rangeSize}"
              binding="#{configurationView.configs}" displayRow="selected"
              selectionListener="#{pageFlowScope.tableSelectionListener.onTableSelectionChanged}"
              columnStretching="last" summary="#{bundle.SEARCH_RESULTS}"
              inlineStyle="width:100%;height:100%"
              emptyText="#{configurationView.emptyTextForConfigTable}"
              fetchSize="#{(bindings.searchResultsIterator.dataControl.dataProvider.collectionModel.rowCount &lt; configViewBean.configFetchSize) ? bindings.searchResultsIterator.dataControl.dataProvider.collectionModel.rowCount : configViewBean.configFetchSize}"
              contextMenuId="rightClickMenuActions"
              sortListener="#{bindings.searchResultsIterator.dataControl.dataProvider.processSort}"
              rowBandingInterval="0">
              <af:column sortProperty="name" sortable="true" headerText="#{bundle.NAME}" id="c1" align="start">
              <af:outputText value="#{row.name}" id="ot5"/>
              </af:column>

              <af:column sortProperty="enabled" sortable="true" width="65"
              headerText="#{bundle.ENABLED}" id="c2">
              <af:panelGroupLayout layout="horizontal" id="afpgrlo001">
              <af:spacer width="25"/>
              <af:image source="/icons/checkmark_status.png" shortDesc="#{bundle.ENABLED}"
              rendered="#{row.enabledAsBoolean}" id="i1"/>
              <af:spacer width="42"/>
              <af:outputText value="#{row.enabledAsBoolean}" id="iIII2"
              inlineStyle="color:White;"/>
              </af:panelGroupLayout>
              </af:column>
              <af:column sortProperty="runReconciliation" sortable="true" headerText="#{bundle.DETECT_DISC}"
              width="65" id="c3">
              <af:panelGroupLayout layout="horizontal" id="afpgrlfsdfo001">
              <af:spacer width="25"/>
              <af:image source="/icons/checkmark_status.png" shortDesc="#{bundle.DETECT_DISC}"
              rendered="#{row.runReconciliationAsBoolean}" id="i2"/>
              <af:spacer width="42"/>
              <af:outputText value="#{row.runReconciliationAsBoolean}" id="iIII3"
              inlineStyle="color:White;"/>
              </af:panelGroupLayout>
              </af:column>
              <af:column sortProperty="scanProfile" sortable="true" headerText="#{bundle.PLUGIN}" id="c4"
              align="start">
              <af:outputText value="#{row.scanProfile}" id="ot6"/>
              </af:column>
              <af:column sortProperty="pluginType" sortable="true" headerText="#{bundle.TYPE}" id="c5"
              align="start">
              <af:panelGroupLayout halign="left" layout="horizontal">
              <af:image source="#{configurationView.scanTypeIconForScansTbl}" id="ot617"/>
              <af:outputText value="#{row.derivedPluginName}" id="ot7"/>
              </af:panelGroupLayout>
              </af:column>
              <af:column sortProperty="dataSource" sortable="true"
              headerText="#{bundle.SOURCE}" id="c6"
              align="start">
              <af:outputText value="#{row.dataSource}" id="ot8"/>
              </af:column>
              <af:column sortProperty="description" sortable="true"
              headerText="#{bundle.DESCRIPTION}" id="c7"
              align="start">
              <af:outputText value="#{row.description}" id="ot9"/>
              </af:column>
              </af:table>
              • 4. Re: NO VERTICAL SCROLL BAR TO TABLE WHEN THE TABLE HAS HUGE NUMBER OF ROWS
                user9942600
                John,
                Actually we dont have that many records but in performance testing we found that scroll bar is missing.

                Regards,
                Raghu.
                • 5. Re: NO VERTICAL SCROLL BAR TO TABLE WHEN THE TABLE HAS HUGE NUMBER OF ROWS
                  user9942600
                  executables in page def:
                  <iterator Binds="root" RangeSize="25" DataControl="DisConfigManagerDelegate" Refresh="always" id="DisConfigManagerDelegateIterator"/>
                  <accessorIterator MasterBinding="DisConfigManagerDelegateIterator" Binds="searchResults" RangeSize="25" DataControl="DisConfigManagerDelegate" Refresh="always" BeanClass="oracle.communications.integrity.configuration.DisConfig" id="searchResultsIterator"/>
                  <searchRegion Binds="searchResultsIterator" Criteria="__ImplicitViewCriteria__" Refresh="always" Customizer="oracle.jbo.uicli.binding.JUSearchBindingCustomizer" id="searchResultsQuery"/>

                  bindings in page def:
                  <tree IterBinding="searchResultsIterator" id="searchResults">
                  <nodeDefinition DefName="oracle.communications.integrity.configuration.DisConfig" Name="searchResults.0">
                  <AttrNames>
                  <Item Value="entityId"/>
                  <Item Value="name"/>
                  <Item Value="runReconciliationAsBoolean"/>
                  <Item Value="scanProfile"/>
                  <Item Value="derivedPluginName"/>
                  <Item Value="description"/>
                  <Item Value="enabledAsBoolean"/> <Item Value="dataSource"/>
                  </AttrNames>
                  </nodeDefinition>
                  </tree>





                  Read method in delegate:

                  /**
                  * Processes the QueryModelImpl and returns the results that satisfy the search criteria.
                  * @param queryModelImpl
                  * @param from
                  * @param to
                  * @return Map - holds the searchResults and TotalResults that satisfy the search criteria.
                  */
                  public Map read(QueryModelImpl queryModelImpl, int from, int to){
                  Map result = new HashMap();

                  Map arguments = buildArguments(from, to);
                  int fromRange = (Integer)arguments.get(FROM_RANGE);
                  int toRange = (Integer)arguments.get(TO_RANGE);
                  String[] ascending = (String[])arguments.get(ASCENDING_SORT);
                  String[] descending = (String[])arguments.get(DESCENDING_SORT);

                  SearchCriteria configSearchCritera = new ConfigSearchCriteriaImpl();
                  SearchCriteria searchCriteria = null;

                  try {
                  searchCriteria =
                  QueryModelProcessor.createSearchCriteria(configSearchCritera,
                  queryModelImpl,
                  new Long(fromRange),
                  new Long(toRange),
                  ascending, descending);
                  } catch (IntegrityException e) {
                  logger.log(Level.SEVERE,getClass().getName(), e);
                  if(errorBean != null){
                  errorBean.showError(ADFUtil.getLocaleValue(ADFErrorHandler.BUNDLE_NAME, IntegrityExceptionConstants.APPLICATION_EXCEPTION));
                  }
                  return returnEmptyResult();
                  }

                  try {
                  result = configManager.findDisConfig(searchCriteria);
                  } catch (Exception e) {
                  logger.log(Level.SEVERE,
                  "Exception while accessing the DB in DisConfigManagerDelegate read method");
                  errorBean =
                  (ErrorHandlerBean)oracle.communications.integrity.configuration.ui.ADFUtil.evaluateEL("#{errorBean}");
                  if (errorBean != null) {
                  if (e.getMessage().equals(IntegrityExceptionConstants.INCORRECT_ESCAPE_SEQ))
                  {
                  errorBean.showError(ADFUtil.getLocaleValue(ADFErrorHandler.BUNDLE_NAME, IntegrityExceptionConstants.INCORRECT_ESCAPE_SEQ));
                  }
                  else
                  errorBean.showError(ADFUtil.getLocaleValue(ADFErrorHandler.BUNDLE_NAME, UIExceptionConstants.QUERY_ERROR));
                  }
                  if(RequestContext.getCurrentInstance() != null){
                  RequestContext.getCurrentInstance().getPageFlowScope().put("totalRows","0");
                  }
                  return returnEmptyResult();
                  }
                  if(RequestContext.getCurrentInstance() != null){
                  RequestContext.getCurrentInstance().getPageFlowScope().put("totalRows",String.valueOf(result.get(TOTAL_RESULTS)));
                  }
                  return result;
                  }
                  • 6. Re: NO VERTICAL SCROLL BAR TO TABLE WHEN THE TABLE HAS HUGE NUMBER OF ROWS
                    lspatil25
                    specify autoHeightRows to say 10000, scrollbar should appear.
                    • 7. Re: NO VERTICAL SCROLL BAR TO TABLE WHEN THE TABLE HAS HUGE NUMBER OF ROWS
                      Don Kleppinger

                      We've had this same issue forever but have lived with it as there is not much the user can do except filter down the data.   We're currently on 11.1.1.4.   autoHeightRows was set to -1 (any number of rows).   I tried setting to 10000 and 2000000 as suggested here but neither helped.  Scrollbar disappears at some large number less than a million rows.

                      • 8. Re: NO VERTICAL SCROLL BAR TO TABLE WHEN THE TABLE HAS HUGE NUMBER OF ROWS
                        Frank Nimphius-Oracle

                        Hi,

                         

                        I don't think that auto height rows should be set to any large number as you suggested as the sole purpose of this feature is to allow tables to shrink in their rendering if a certain threshold is not reached. I don't think you display 1000 on a single screen at once (without pagination or scrolling). The problem with POJO based data controls is that you need to enable it (through the POJO model) to perform pagination as otherwise all data will be queried at once, which means you wait forever for the data to load.

                         

                        http://www.oracle.com/technetwork/developer-tools/adf/learnmore/37-adf-pojo-pagination-169179.pdf

                         

                        On a second note, I miss two tests in this whole thread

                         

                        i) does this reproduce on different browsers

                        ii) does it reproduce on a newer version of JDeveloper (11.1.1.6 or 11.1.1.7) as you wont get a fix for 11.1.1.2 (this release must be 3 years old) in case its a reproducible issue

                         

                        Last but not least, Don, not sure this question still is open as the initial post has been from April. So unless you wanted to re-open it ...

                         

                        Frank