0 Replies Latest reply on Apr 27, 2012 9:56 AM by renke

    reRender with columns in datatable

    renke

      Hi all

       

      I'm having a little bit of trouble with this one. The problem is that I have a datatable and its contents is made of columns and I can't figure out how to reRender a single column. Here's a little example

       

       

      <rich:dataTable id="studentsTable" value="#{mbean.students}" var="student">
           <f:facet name="header">
                <rich:columnGroup>
                     <rich:columns value="#{student.classes}" var="class" index="index">
                          <rich:dropDownMenu event="onmouseover" jointPoint="bl" submitMode="ajax" value="#{class.date}" >
                               <rich:menuItem action="#{mbean.toggleSelection(index)}" reRender="studentsTable" value="Toggle Selection" ajaxSingle="true"/>
                          </rich:dropDownMenu>
                     </rich:columns>          </rich:columnGroup>
           </f:facet>
           <rich:columns value="#{student.classes}" var="class" >
                <a4j:outputPanel>
                     <h:selectBooleanCheckbox value="#{class.attendedClass}"/>
                </a4j:outputPanel>
           </rich:columns>
      </rich:dataTable>
      

       

      and in the ManagedBean:

       

       

      private List<Student> students;
      
      public List<Student> getStudents() {
           return students;
      }
      
      public void toggleSelection(Integer index) {
           for (Student student : students) 
                student.getClasses().get(index).setAtendedClass(!student.getClasses().get(index).isAttendedClass());    
      }
      

       

      The code above works, but rerender the whole table makes it really slow when I have many checkboxes on it. I've already tried to specify dynamic ids to the columns with its index and rerender it, but it only works before the first rerender.