"maksimkaszynski" wrote:
In which browser do you get 4th item?
"rulinsun" wrote:
I also experienced some problems with scrollableDataTable:
1) When set column style of text-align:right, the header "|" is overlapped with header text.
2) When set column style of text-align:right, the headers and column bodies of the columns after frozen column will not align properly. The offset will be getting larger and larger as the column number increases.
3) There is no right site border of last frozen column, looks weired.
4) Sometime, I got javascript error of:
line 241:
Error: 'tagName' is null or not an object
Hopefully those problems will be addressed.
Thanks!
With IE 7.0 I'm having the same problem. I'm getting "Line 243. Error: 'tagname' is null or not an object." I'm running JBoss 4.2.2.GA and Seam2.0.0.GA. in the manifest.mf for richfaces-impl.jar that's deployed to default/deploy it's Implementation-Version: 3.1.2.GA for richfaces.
Here is the xhtml that produces the error:
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.ajax4jsf.org/rich"
xmlns:a4j="https://ajax4jsf.dev.java.net/ajax"
xmlns:c="http://java.sun.com/jstl/core"
template="layout/template.xhtml">
<ui:define name="body">
<script type="text/javascript"
src="seam/resource/remoting/resource/remote.js">
</script>
<script type="text/javascript"
src="seam/resource/remoting/interface.js?noteAction">
</script>
<script type="text/javascript"
src="seam/resource/remoting/interface.js?securityAuditAction">
</script>
<script type="text/javascript"
src="js/securityAudit.js">
</script>
<h:messages styleClass="message"/>
<rich:panel>
<h:form id="mainForm">
<h:outputText value="No Direct Reports" rendered="#{myAuditList != null and myAuditList.rowCount==0}"/>
<h:dataTable id="dataTable1" value="#{myAuditList}" var="myRow" rendered="#{myAuditList != null and myAuditList.rowCount > 0}"
styleClass="dataTable" rowClasses="oddRow, evenRow" frame="hsides">
<h:column>
<f:facet name="header">Status</f:facet>
<h:graphicImage id="statusImage" value="/img/#{myRow[1].auditProgress}.gif"/>
</h:column>
<h:column>
<f:facet name="header">Employee Name</f:facet>
<!-- siteId and employeeNumber hidden fields are used for all radio buttons -->
<h:outputText id="employeeName" value="#{myRow[0].id.employeeName}"/>
<h:inputHidden id="employeeNameHidden" value="#{myRow[0].id.employeeName}"/>
<h:inputHidden id="siteId" value="#{myRow[0].id.siteId}"/>
<h:inputHidden id="employeeNumber" value="#{myRow[0].id.employeeNumber}"/>
</h:column>
<h:column>
<f:facet name="header">SiteId</f:facet>
<h:outputText value="#{myRow[0].id.siteId}"/>
</h:column>
<h:column>
<f:facet name="header">EmployeeNumber</f:facet>
<h:outputText value="#{myRow[0].id.employeeNumber}"/>
</h:column>
<h:column>
<f:facet name="header">Adjustment Limit</f:facet>
<h:outputText value="#{myRow[0].id.employeeNumber}"/>
</h:column>
<h:column>
<f:facet name="header">Account Approved?</f:facet>
<h:panelGrid columns="2">
<h:selectOneRadio id="accountApprovedRB" value="#{myRow[1].icomsAccountApproved}">
<a4j:support event="onclick"
oncomplete="processNote(#{myAuditList.getRowIndex()}, 'accountApproved')"
action="#{noteAction.setRenderRadioButtons(myAuditList.getRowIndex(), myRow[1].icomsAccountApproved)}"
ajaxSingle="true"
reRender="mainForm"/>
<f:selectItems value="#{securityAuditAction.securityAuditRadioButtons}" />
</h:selectOneRadio>
<h:graphicImage id="acctGraphic" value="/img/icon_edit.gif"
onclick="editNote(#{myAuditList.getRowIndex()}, 'accountApproved');"
rendered="#{noteAction.getRenderNoteGraphic(myAuditList.getRowIndex(), 'accountApproved') ||
securityAuditAction.getLoadedNote(myAuditList.getRowIndex(), 'accountApproved')}"/>
</h:panelGrid>
</h:column>
<h:column>
<f:facet name="header">Security Level Approved?</f:facet>
<h:panelGrid columns="2">
<h:selectOneRadio id="securityLevelApprovedRB" value="#{myRow[1].securityLevelApproved}"
onclick="processNote(#{myAuditList.getRowIndex()}, 'secLevelApproved')"
rendered="#{noteAction.getRenderRadioButtons(myAuditList.getRowIndex())}">
<f:selectItems value="#{securityAuditAction.securityAuditRadioButtons}" />
</h:selectOneRadio>
<a4j:outputPanel layout="none">
<h:graphicImage id="securityLevelGraphic" value="/img/icon_edit.gif"
onclick="editNote(#{myAuditList.getRowIndex()}, 'secLevelApproved');"
rendered="#{noteAction.getRenderNoteGraphic(myAuditList.getRowIndex(), 'secLevelApproved') ||
securityAuditAction.getLoadedNote(myAuditList.getRowIndex(), 'secLevelApproved')}"/>
</a4j:outputPanel>
</h:panelGrid>
</h:column>
<h:column>
<f:facet name="header">Adjustment Limit Approved?</f:facet>
<h:panelGrid columns="2">
<h:selectOneRadio id="adjustmentLimitApprovedRB" value="#{myRow[1].adjustmentLimitApproved}"
onclick="processNote(#{myAuditList.getRowIndex()}, 'adjLimitApproved')"
rendered="#{noteAction.getRenderRadioButtons(myAuditList.getRowIndex())}">
<f:selectItems value="#{securityAuditAction.securityAuditRadioButtons}" />
</h:selectOneRadio>
<h:graphicImage id="adjLimitGraphic" value="/img/icon_edit.gif"
onclick="editNote(#{myAuditList.getRowIndex()}, 'adjLimitApproved');"
rendered="#{noteAction.getRenderNoteGraphic(myAuditList.getRowIndex(), 'adjLimitApproved') ||
securityAuditAction.getLoadedNote(myAuditList.getRowIndex(), 'adjLimitApproved')}"/>
</h:panelGrid>
</h:column>
<h:column>
<h:commandButton id="submitEmployee" value="Submit" action="#{securityAuditAction.submit}" style="visibility:hidden"/>
</h:column>
</h:dataTable>
</h:form>
</rich:panel>
<center>
<a4j:status>
<f:facet name="start">
<h:graphicImage value="/img/spinner.gif" height="50" width="50"/>
</f:facet>
</a4j:status>
</center>
<!-- note only -->
<rich:modalPanel id="mpNote" minHeight="200" minWidth="450"
height="500" width="500" zindex="2000">
<f:facet name="header">
<a4j:form id="a4jHeaderForm1">
<h:outputText id="headerText1" value=""/>
</a4j:form>
</f:facet>
<rich:scrollableDataTable value="#{noteAction.getNoteLogList()}" var="myRow" rows="10" height="50px" width="300px">
<rich:column>
<f:facet name="header">NoteText</f:facet>
<h:outputText value="#{myRow.noteText}"/>
</rich:column>
<rich:column>
<f:facet name="header">TimeStamp</f:facet>
<h:outputText value="#{myRow.timeStamp}"/>
</rich:column>
</rich:scrollableDataTable>
<a4j:form id="a4jMainForm1">
<h:panelGrid columns="2" style="vertical-align:middle">
<h:outputText id="description1" value=""/>
<BR/>
<h:inputTextarea id="noteText1" value="#{noteAction.noteText}" rows="6" cols="50">
<a4j:support event="onkeyup" reRender="out1" />
</h:inputTextarea>
<h:panelGroup id="out1">
<a4j:commandButton id="submit1" value="submit" action="#{noteAction.submit('mpNote')}"
onclick="Richfaces.hideModalPanel('mpNote')" rendered="#{not empty noteAction.noteText2}"/>
</h:panelGroup>
<BR/>
<a4j:commandButton value="cancel" onclick="Richfaces.hideModalPanel('mpNote');unselectCurrentRadioButton()"/>
</h:panelGrid>
</a4j:form>
</rich:modalPanel>
<!-- no note, row data submit only -->
<rich:modalPanel id="mpEmployeeSubmit" minHeight="200" minWidth="450"
height="500" width="500" zindex="2000">
<f:facet name="header">
<a4j:form id="a4jHeaderForm2">
<h:outputText id="headerText2" value=""/>
</a4j:form>
</f:facet>
<a4j:form id="a4jMainForm2">
<h:panelGrid columns="2" style="vertical-align:middle">
<h:outputText id="description2" value=""/>
<BR/>
<a4j:commandButton value="submit" action="#{noteAction.submit('mpEmployeeSubmit')}" oncomplete="clickDataTableSubmit();Richfaces.hideModalPanel('mpEmployeeSubmit')"/>
<BR/>
<a4j:commandButton value="cancel" onclick="Richfaces.hideModalPanel('mpEmployeeSubmit');unselectCurrentRadioButton()"/>
</h:panelGrid>
</a4j:form>
</rich:modalPanel>
<!-- note and row data submit -->
<rich:modalPanel id="mpNoteAndEmployeeSubmit" minHeight="200" minWidth="450"
height="500" width="500" zindex="2000">
<f:facet name="header">
<a4j:form id="a4jHeaderForm3">
<h:outputText id="headerText3" value=""/>
</a4j:form>
</f:facet>
<a4j:form id="a4jMainForm3">
<h:panelGrid columns="2" style="vertical-align:middle">
<h:outputText id="description3" value=""/>
<BR/>
<h:inputTextarea id="noteText3" value="#{noteAction.noteText}" rows="6" cols="50">
<a4j:support event="onkeyup" reRender="out3" />
</h:inputTextarea>
<h:panelGroup id="out3">
<a4j:commandButton id="submit3" value="submit" action="#{noteAction.submit('mpNoteAndEmployeeSubmit')}" oncomplete="clickDataTableSubmit();Richfaces.hideModalPanel('mpNoteAndEmployeeSubmit')"
rendered="#{not empty noteAction.noteText2}"/>
</h:panelGroup>
<BR/>
<a4j:commandButton value="cancel" onclick="Richfaces.hideModalPanel('mpNoteAndEmployeeSubmit');unselectCurrentRadioButton()"/>
</h:panelGrid>
</a4j:form>
</rich:modalPanel>
<!-- <a4j:commandButton value="click me" reRender="mainForm:dataTable1:0:securityLevelGraphic"/> -->
</ui:define>
</ui:composition>
This xhtml works fine (no error):
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.ajax4jsf.org/rich"
xmlns:a4j="https://ajax4jsf.dev.java.net/ajax"
xmlns:c="http://java.sun.com/jstl/core"
template="layout/template.xhtml">
<ui:define name="body">
<h:form>
<rich:spacer height="30" />
<rich:scrollableDataTable value="#{noteAction.getNoteLogList()}" var="myRow" rows="10" height="50px" width="300px">
<!-- <h:dataTable value="#{noteAction.getNoteLogList()}" var="myRow"> -->
<rich:column>
<f:facet name="header">NoteText</f:facet>
<h:outputText value="#{myRow.noteText}"/>
</rich:column>
<rich:column>
<f:facet name="header">TimeStamp</f:facet>
<h:outputText value="#{myRow.timeStamp}"/>
</rich:column>
<!-- </h:dataTable> -->
</rich:scrollableDataTable>
</h:form>
</ui:define>
</ui:composition>