Hi,

i'm using <tc:sheet> with the attribute sortActionListener. The sheet 
contains one static column (<tc:column>) and a dynamic number of 
supplemental columns. The dynamic columns are added by the binding 
attribute of the <tc:sheet>. 

The problem is as followed:
The sortActionListener method is ONLY called by clicking on the 
columnheader of the static column BUT NOT by clicking  on the columnheader 
of one of a dynamic column.

What could be the reason? Someone any suggestion? Or is it a bug?

---------------------------------------------
JSF-Code:
---------------------------------------------
<tc:sheet rows="10"
        columns="20px;#{myForm.dynamicColumnsString}"
        value="#{myForm.documents}" 
        var="doc"
        selectable="multi" 
        id="documentsSheet" 
        showHeader="true" 
        showDirectLinks="center" 
        showPageRange="right" 
        showRowRange="left"
        state="#{documentsSheetState}"
        sortActionListener="#{myForm.doSortDocuments}"
        stateChangeListener="#{myForm.doUpdatePreviewImages}"
        binding="#{myForm.documentBinding}">
 
        <tc:column id="index" align="right">
                <tc:out value="#{doc.index}" />
        </tc:column>
 
</tc:sheet>

---------------------------------------------
Java Code:
---------------------------------------------
public UIData getDocumentBinding() {

        if (this.ivDocumentSheet == null) {
            setDocumentBinding(new UIData());
        }
 
        if (ivAttributes != null) {
 
            if (ivDocumentSheet.getChildCount() <= 1) {
 
                String lvColumnLayout = "20px";
                int lvCnt = 0;
                for (Iterator i = ivAttributes.iterator(); i.hasNext();) 
                {
                    Attribute lvAttribute = (Attribute) i.next();
                    UIColumn lvColumn = new UIColumn();
                    lvColumn.setLabel(lvAttribute.getName());
                    lvColumn.setId("Column" + lvCnt);
                    UIOutput lvOut = (UIOutput) 
FacesContext.getCurrentInstance().getApplication().createComponent(UIOutput.COMPONENT_TYPE);
                    lvOut.setRendererType("Out");
 
                    String lvBindingString = "#{doc.value" + lvCnt + "}";
                    ValueBinding lvBinding = 
FacesContext.getCurrentInstance().getApplication().createValueBinding(lvBindingString);
                    lvOut.setValueBinding("value", lvBinding);
 
                    lvColumn.getChildren().add(lvOut);
                    lvColumn.setSortable(true);
                    lvColumn.setAlign("center");
 
                    ivDocumentSheet.getChildren().add(lvColumn);
                    lvColumnLayout += ";100px";
                    lvCnt++;
                }
                ivDokumentDetailsSheet.setColumns(lvColumnLayout);
            }
        }
        return this.ivDocumentSheet;
}

public UIData getDocumentBinding() {

        if (this.ivDocumentSheet == null) {
            setDocumentBinding(new UIData());
        }
 
        if (ivAttributes != null) {
 
            if (ivDocumentSheet.getChildCount() <= 1) {
 
                String lvColumnLayout = "20px";
                int lvCnt = 0;
                for (Iterator i = ivAttributes.iterator(); i.hasNext();) 
                {
                    Attribute lvAttribute = (Attribute) i.next();
                    UIColumn lvColumn = new UIColumn();
                    lvColumn.setLabel(lvAttribute.getName());
                    lvColumn.setId("Column" + lvCnt);
                    UIOutput lvOut = (UIOutput) 
FacesContext.getCurrentInstance().getApplication().createComponent(UIOutput.COMPONENT_TYPE);
                    lvOut.setRendererType("Out");
 
                    String lvBindingString = "#{doc.value" + lvCnt + "}";
                    ValueBinding lvBinding = 
FacesContext.getCurrentInstance().getApplication().createValueBinding(lvBindingString);
                    lvOut.setValueBinding("value", lvBinding);
 
                    lvColumn.getChildren().add(lvOut);
                    lvColumn.setSortable(true);
                    lvColumn.setAlign("center");
 
                    ivDocumentSheet.getChildren().add(lvColumn);
                    lvColumnLayout += ";100px";
                    lvCnt++;
                }
                ivDokumentDetailsSheet.setColumns(lvColumnLayout);
            }
        }
        return this.ivDocumentSheet;
}


public void setDocumentBinding(UIData pvTable) 
{
        this.ivDocumentSheet = pvTable;
        if (ivDocumentSheet.getChildren().size() > 1) 
        {
            int lvColumnSize = ivDocumentSheet.getChildCount();
            for (int i = 1; i < lvColumnSize; i++) {
                ivDocumentSheet.getChildren().remove(1);
            }
            ivDocumentSheet.setColumns("");
        }
        this.getDocumentBinding();
}






kind regards

Adam A. Henne

Reply via email to