datascroller doesn't render if above dataGrid
achildress Feb 20, 2008 12:58 PMI have a datascroller bound to a dataGrid. The dataGrid is ajax rendered from an a4j:commandButton on the page. If I place the datascroller above the dataGrid, when the page is rendered, the datascroller is empty. If I click the commandButton a second time, then the datascroller renders properly. I've tried all means of wrapping the datascroller in components such as rich:panel header facet with the dataGrid as the panel body, etc. but nothing seems to work other than putting the datascroller beneath the dataGrid. This seems like such a no-brainer and there are many posts in this forum about this problem. Does anybody have a solution?
I'm using:
facelets 1.1.12
richfaces 3.1.4
JSF 1.2
Here is my page code:
<ui:composition 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"
xmlns:u="http:/jsf.exadel.com/template/util" >
<link rel="stylesheet" type="text/css" media="all" href="#{facesContext.externalContext.requestContextPath}/css/default.css"/>
<h:form id="schedarrivform">
<rich:panel id="schedarrivpanel" style="width: 100%; height: 500px;">
<f:facet name="header">Process Scheduled Arrivals</f:facet>
<h:panelGrid id="pgrid1" columns="2" style="margin-top: 10px;">
<h:outputLabel styleClass="stdLabel" for="diagFacCombo" value="Facility: "/>
<h:selectOneListbox size="1" id="diagFacCombo" value="#{DOPIntakeScheduledArrivalsBean.facilityID}">
<f:selectItems value="#{CodeCacheBean.getCodes$['diagFacilityCode']}"/>
</h:selectOneListbox>
<h:outputLabel styleClass="stdLabel" value="Scheduled Arrival Date Range: "/>
<h:panelGrid columns="3">
<rich:calendar id="dateRangeStart" value="#{DOPIntakeScheduledArrivalsBean.dateRangeStart}" datePattern="MM/dd/yyyy"></rich:calendar>
<h:outputLabel styleClass="stdLabel" value=" To: "/>
<rich:calendar id="dateRangeEnd" value="#{DOPIntakeScheduledArrivalsBean.dateRangeEnd}" datePattern="MM/dd/yyyy"></rich:calendar>
</h:panelGrid>
</h:panelGrid>
<h:panelGrid columns="1">
<a4j:commandButton value="Retrieve" actionListener="#{DOPIntakeScheduledArrivalsBean.retrieveOffenders}" reRender="offenderList, dscroller1"/>
</h:panelGrid>
<rich:panel id="rpanel1" style="margin-top: 10px;">
<f:facet name="header">Scheduled Arrivals</f:facet>
<a4j:region id="dscroller1reg">
<rich:datascroller ajaxRendered="true" id="dscroller1" for="offenderList" style="margin-top: 6px; text-align: center; background-color: #c6c6c6;"></rich:datascroller>
</a4j:region>
<a4j:outputPanel id="offenderListPanel">
<rich:dataGrid ajaxRendered="true" style="height: 350px;" id="offenderList" value="#{DOPIntakeScheduledArrivalsBean.preArrivalOffenders}" var="PreArrivalOffenderBean" columns="1" elements="2">
<rich:panel id="rpanel2" style="width: 600px;">
<f:facet name="header">
<h:outputText value="#{PreArrivalOffenderBean.offenderName}" styleClass="stdLabelLight"></h:outputText>
</f:facet>
<table>
<tr>
<td align="right" width="10%"><h:outputText value="DOC#:" styleClass="tableLabel"/></td>
<td align="left" width="20%"><h:outputText value="#{PreArrivalOffenderBean.offenderID}" styleClass="tableText"/></td>
<td align="right" width="20%"><h:outputText value="Scheduled Arrival Date:" styleClass="tableLabel"/></td>
<td align="left" width="20%"><h:outputText value="#{PreArrivalOffenderBean.scheduledArrivalDate}" styleClass="tableText"><f:convertDateTime pattern="MM/dd/yyyy"/></h:outputText></td>
<td align="left" width="20%" rowspan="5" valign="top">
<rich:dataGrid id="taskList" value="#{PreArrivalOffenderBean.tasks}" var="PreArrivalTaskBean" columns="1" elements="3">
<f:facet name="header">
<h:outputText value="Pending Tasks" styleClass="stdLabel"></h:outputText>
</f:facet>
<a4j:commandLink limitToList="true" actionListener="#{DOPIntakeScheduledArrivalsBean.selectOffender}" reRender="confirm" rendered="#{PreArrivalTaskBean.isTaskConfirm}" oncomplete="${PreArrivalTaskBean.taskURL}" styleClass="linkText" value="#{PreArrivalTaskBean.taskName}"/>
<a4j:commandLink limitToList="true" reRender="maincontent" styleClass="linkText" rendered="#{PreArrivalTaskBean.isTaskAction}" value="#{PreArrivalTaskBean.taskName}">
<a4j:actionparam name="selectedURL" value="#{PreArrivalTaskBean.taskURL}" assignTo="#{DOPIntakeMenuBean.selectedURL}"/>
</a4j:commandLink>
</rich:dataGrid>
</td>
</tr>
<tr>
<td align="right"><h:outputText value="County:" styleClass="tableLabel"/></td>
<td align="left"><h:outputText value="#{PreArrivalOffenderBean.convictionCountyDisplay}" styleClass="tableText"/></td>
<td align="right"><h:outputText value="Offense Type:" styleClass="tableLabel"/></td>
<td align="left"><h:outputText value="#{PreArrivalOffenderBean.primaryFelonyMisdemeanorDisplay}" styleClass="tableText"/></td>
</tr>
<tr>
<td align="right"><h:outputText value="Gender:" styleClass="tableLabel"/></td>
<td align="left"><h:outputText value="#{PreArrivalOffenderBean.genderDisplay}" styleClass="tableText"/></td>
<td align="right"><h:outputText value="Sentence Length:" styleClass="tableLabel"/></td>
<td align="left"><h:outputText value="#{PreArrivalOffenderBean.sentenceLengthDisplay}" styleClass="tableText"/></td>
</tr>
<tr>
<td align="right"><h:outputText value="Race:" styleClass="tableLabel"/></td>
<td align="left"><h:outputText value="#{PreArrivalOffenderBean.raceDisplay}" styleClass="tableText"/></td>
<td align="right"><h:outputText value="Spec Char:" styleClass="tableLabel"/></td>
<td align="left"><h:outputText value="#{PreArrivalOffenderBean.specialCharacteristicsDisplay}" styleClass="tableText"/></td>
</tr>
<tr>
<td align="right"><h:outputText value="Birth Date:" styleClass="tableLabel"/></td>
<td align="left" colspan="3"><h:outputText value="#{PreArrivalOffenderBean.birthDate}" styleClass="tableText"><f:convertDateTime pattern="MM/dd/yyyy" /></h:outputText></td>
</tr>
</table>
</rich:panel>
</rich:dataGrid>
</a4j:outputPanel>
</rich:panel>
</rich:panel>
</h:form>
<rich:modalPanel id="task" minHeight="200" minWidth="450" height="200" width="500" zindex="2000">
<f:facet name="header">
<h:outputText value="Complete Task" />
</f:facet>
<f:facet name="controls">
<h:graphicImage value="/images/close.png" style="cursor:pointer" onclick="Richfaces.hideModalPanel('task')" />
</f:facet>
<a4j:include id="taskconfirm" viewId="\taskconfirm.xhtml"/>
</rich:modalPanel>
<script>
function getRightTop(ref) {
var position = new Object();
position.top = 0;
position.left = 0;
return position;
}
</script>
</ui:composition>
Thanks in advance for any help you can provide