rich:带有Internet Explorer的数据表和可扩展列

时间:2009-11-18 15:01:44

标签: internet-explorer jsf richfaces expand richdatatable

我为具有rich:datatable和rich:列的可扩展列/行创建了一个简单的解决方案,类似于:Best way to make an expandable/collapsible subTable with rich:dataTable

facelets代码(简化)如下:

<rich:dataTable id="detailtable"
    value="#{bean.model}"
    var="row"
    columns="2">
    <rich:column id="detail-check">
        <f:facet name="header">
            <h:selectBooleanCheckbox value="#{bean.expandAll}">
                <a4j:support event="onchange" action="#{bean.expandAllAction}"
                    reRender="detailtable" />
            </h:selectBooleanCheckbox>
        </f:facet>
        <h:selectBooleanCheckbox value="#{row.expanded}">
            <a4j:support event="onchange" reRender="detailtable" />
        </h:selectBooleanCheckbox>
    </rich:column>
    <!-- actual data column -->
    <rich:column id="detail-column"
        rendered="#{row.expanded}"
        breakBefore="true"
        colspan="2">
        <!-- detail column content -->
    </rich:column>
</rich:dataTable>

当您单击详细信息框时,这将提供一个包含展开列的表,详细信息列将呈现在实际行的下方。支持bean上的expandAllAction只是遍历行并将其扩展属性设置为与支持bean相同,从而扩展/扩展所有行。

然而,这对于Internet Explorer(IE7或IE8)无法正常工作,尽管它适用于FF和Chrome。如果用户单击复选框,则在点击页面上的任何其他位置之前不会呈现任何内容。正在更新支持bean和对象,但在单击其他元素之前不会重新呈现。

这是用IE或者只是Richfaces的一个错误而又是邪恶的吗?我发现IE和tbody有类似的问题,但应该已经修复了。我可以提交错误报告,但在此之前,是否有任何简单的解决方法?

Richfaces版本是3.3.1,它在Jboss 4.2.1GA上运行并捆绑了Sun RI。

1 个答案:

答案 0 :(得分:1)

尝试使用其他活动,例如onclick
来自selectBooleanCheckBox的tldoc:onchange“当此元素失去焦点时执行的Javascript代码,并且自获得焦点后其值已被修改。”onclick是< em>“在此元素上单击指针按钮时执行的Javascript代码。”

昨天是similar question。 BalusC的一条评论可能会证实我的假设“在无线电/复选框的情况下,某些浏览器中的更改事件仅在您单击2次时才会触发”