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

    ExtendedDatatable NoRowAvailable Exception

    zeroshade

      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.