1 Reply Latest reply on Mar 16, 2009 8:26 AM by Ilya Shaikovsky

    dataTable bug ?

    Alexey Diomin Newbie

      on select any value in select menu value send to server, but dataTable header not update:

      <%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
      <%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
      <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
      <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
      
      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      
      <html>
       <head><title>test</title></head>
       <body>
       <f:view>
       <h:form>
       <h:selectOneListbox size="1"
       style="width: 580px;"
       value="#{testTable2.sel}"
       onchange="this.form.submit()"
       valueChangeListener="#{testTable2.OnChangeDataSection}"
       >
       <f:selectItem itemLabel="1" itemValue="1"/>
       <f:selectItem itemLabel="2" itemValue="2"/>
       </h:selectOneListbox>
       <rich:dataTable binding="#{testTable2.htmlDataTable}" />
       </h:form>
       </f:view>
       </body>
      </html>
      


      package test;
      
      import org.richfaces.component.html.HtmlDataTable;
      import org.richfaces.component.html.HtmlColumn;
      import org.richfaces.component.html.HtmlColumnGroup;
      
      import javax.faces.event.ValueChangeEvent;
      import javax.faces.component.html.HtmlOutputText;
      
      public class TestTable2 {
       HtmlDataTable htmlDataTable;
       Long sel;
      
       public TestTable2() {
       sel = 1l;
       FillTable();
       }
      
       public Long getSel() {
       return sel;
       }
      
       public void setSel(Long sel) {
       this.sel = sel;
       }
      
       public HtmlDataTable getHtmlDataTable() {
       return htmlDataTable;
       }
      
       public void setHtmlDataTable(HtmlDataTable htmlDataTable) {
       this.htmlDataTable = htmlDataTable;
       }
      
       public void OnChangeDataSection(ValueChangeEvent ev) {
       sel = Long.valueOf(ev.getNewValue().toString());
       FillTable();
       }
      
       private void FillTable() {
       htmlDataTable = new HtmlDataTable();
      
       HtmlColumnGroup hcl = new HtmlColumnGroup();
       hcl.getChildren().add(getCol("1"));
      
       if (sel > 1) {
       hcl.getChildren().add(getCol("2"));
       }
      
       htmlDataTable.getFacets().put("header", hcl);
       }
      
       private HtmlColumn getCol(String text) {
       HtmlColumn col = new HtmlColumn();
       HtmlOutputText t = new HtmlOutputText();
       t.setValue(text);
       col.getChildren().add(t);
      
       return col;
       }
      }
      


      binding update only first page load