Hi Adam,

at the first quick look:
 you are removing the dynamic columns in the setDocumentBinding().
 This method is invoked on every view restore, after this there are no
colums to invoke the actionListener on.


Regards,
    Volker

2008/1/17, [EMAIL PROTECTED] <[EMAIL PROTECTED]>:
> 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
>
>


-- 
inexso - information exchange solutions GmbH
Bismarckstraße 13      | 26122 Oldenburg
Tel.: +49 441 4082 356 |
FAX:  +49 441 4082 355 | www.inexso.de

Reply via email to