0 Replies Latest reply on Oct 5, 2011 12:03 PM by Pablo Ochoa

    ExtendedDatatable NoRowAvailable Exception

    Pablo Ochoa Newbie

      Hello Everyone, I'm using an extended DataTable to support selecion of rows and execute some server code when the selectionChange event happens. For this I have the following table:

       

       

      <rich:extendedDataTable value="#{empresaDM.empresa.direccionEmpresas}" var="direccionEmpresa"
                                                           rows="10" noDataLabel="#{messages.tableEmptyMessage}" 
                                                           selectionMode="single"
                                                           >
                                      <a4j:ajax execute="@this"
                                             event="selectionchange"
                                             listener="#{empresaController.tablesRowSelectionListener}">
                                      </a4j:ajax>
                                      <f:facet name="header">
                                          <h:outputText value="#{labels.direccionSP}" />
                                      </f:facet>
                                      <rich:column>
                                              <f:facet name="header">
                                                  <h:outputText value="#{labels.predeterminado}" />
                                              </f:facet>
                                              <a4j:outputPanel rendered="#{direccionEmpresa ne empresaDM.direccionEmpresaSeleccionada}">
                                                  <h:outputText value="#{direccionEmpresa.stsPredeterminado}" />
                                              </a4j:outputPanel>
                                              <a4j:outputPanel rendered="#{direccionEmpresa eq empresaDM.direccionEmpresaSeleccionada}">
                                                  <h:inputText value="#{direccionEmpresa.stsPredeterminado}"/>
                                              </a4j:outputPanel>
      
                                      </rich:column>
      
                                      <rich:column >
                                              <f:facet name="header">
                                                  <h:outputText value="#{labels.sector}" />
                                              </f:facet>
                                              <a4j:outputPanel rendered="#{direccionEmpresa ne empresaDM.direccionEmpresaSeleccionada}"">
                                                  <h:outputText value="#{direccionEmpresa.txtSector}" />
                                              </a4j:outputPanel>
                                              <a4j:outputPanel rendered="#{direccionEmpresa eq empresaDM.direccionEmpresaSeleccionada}">
                                                  <h:inputText value="#{direccionEmpresa.txtSector}"/>
                                              </a4j:outputPanel>
      
                                      </rich:column>
      
                                      <rich:column>
                                              <f:facet name="header">
                                                  <h:outputText value="#{labels.calle_principal}" />
                                              </f:facet>
                                              <a4j:outputPanel rendered="#{direccionEmpresa ne empresaDM.direccionEmpresaSeleccionada}">
                                                  <h:outputText value="#{direccionEmpresa.txtCallePrincipal}" />
                                              </a4j:outputPanel>
                                              <a4j:outputPanel rendered="#{direccionEmpresa eq empresaDM.direccionEmpresaSeleccionada}">
                                                  <h:inputText value="#{direccionEmpresa.txtCallePrincipal}"/>
                                              </a4j:outputPanel>
      
                                      </rich:column>
      
                                      <rich:column>
                                              <f:facet name="header">
                                                  <h:outputText value="#{labels.numero}" />
                                              </f:facet>
                                              <a4j:outputPanel rendered="#{direccionEmpresa ne empresaDM.direccionEmpresaSeleccionada}">
                                                  <h:outputText value="#{direccionEmpresa.txtNumero}" />
                                              </a4j:outputPanel>
                                              <a4j:outputPanel rendered="#{direccionEmpresa eq empresaDM.direccionEmpresaSeleccionada}">
                                                  <h:inputText value="#{direccionEmpresa.txtNumero}"/>
                                              </a4j:outputPanel>
                                      </rich:column>
      
                                      <rich:column >
                                              <f:facet name="header">
                                                  <h:outputText value="#{labels.calle_secundaria}"/>
                                              </f:facet>
                                              <a4j:outputPanel rendered="#{direccionEmpresa ne empresaDM.direccionEmpresaSeleccionada}">
                                                  <h:outputText value="#{direccionEmpresa.txtCalleSecundaria}" />
                                              </a4j:outputPanel>
                                              <a4j:outputPanel rendered="#{direccionEmpresa eq empresaDM.direccionEmpresaSeleccionada}">
                                                  <h:inputText value="#{direccionEmpresa.txtCalleSecundaria}"/>
                                              </a4j:outputPanel>
                                      </rich:column>
      
                                      <rich:column >
                                              <f:facet name="header">
                                                  <h:outputText value="#{labels.informacion_adicional}" />
                                              </f:facet>
                                              <a4j:outputPanel rendered="#{direccionEmpresa ne empresaDM.direccionEmpresaSeleccionada}">
                                                  <h:outputText value="#{direccionEmpresa.txtInformacionAdicional}" />
                                              </a4j:outputPanel>
                                              <a4j:outputPanel rendered="#{direccionEmpresa eq empresaDM.direccionEmpresaSeleccionada}">
                                                  <h:inputText value="#{direccionEmpresa.txtInformacionAdicional}"/>
                                              </a4j:outputPanel>
                                      </rich:column>
      
      
      
                                      <rich:column>
      
                                          <a4j:commandButton value="DONE" render="direccionEmpresaTable" rendered="#{direccionEmpresa eq empresaDM.direccionEmpresaSeleccionada}">
                                              <f:setPropertyActionListener target="#{empresaDM.direccionEmpresaSeleccionada}" value="#{null}" />
                                          </a4j:commandButton>
                                          <a4j:commandLink  rendered="#{direccionEmpresa eq empresaDM.direccionEmpresaSeleccionada}"
                                                           render="direccionEmpresaTable"
                                                           action="#{empresaController.eliminarDireccion}">
                                              <h:graphicImage library="images" name="ic_eliminar.gif" styleClass="button-link"/>
                                          </a4j:commandLink>
                                      </rich:column>
      
                                  </rich:extendedDataTable>
      

       

      And my listener has the following code:

       

       

      public void tablesRowSelectionListener(AjaxBehaviorEvent event){
              UIExtendedDataTable dataTable=(UIExtendedDataTable)event.getComponent();
              Object selectedRow=dataTable.getRowData();
      
              if(selectedRow instanceof Empresa){
                  empresaMarcada=(Empresa)selectedRow;
              }else if(selectedRow instanceof DireccionEmpresa){
                  empresaDM.setDireccionEmpresaSeleccionada((DireccionEmpresa)selectedRow);
              }else if(selectedRow instanceof TelefonoEmpresa){
                  empresaDM.setTelefonoEmpresaSeleccionada((TelefonoEmpresa)selectedRow);
              }else if(selectedRow instanceof Usuario){
                  empresaDM.setAdministradorSeleccionada((Usuario)selectedRow);
              }else if(selectedRow instanceof Contacto){
                  empresaDM.setContactoEmpresaSeleccionada((Contacto)selectedRow);
              }
          }
      

       

      However when I get to the dataTable.getRowData(), I'm gettin NoRowAvailableException,

      Why this could be hapenning thanks a lot.