apex:actionFunction重新渲染非visualforce组件

时间:2012-08-13 17:45:16

标签: salesforce apex-code visualforce

我在visualforce页面中设置了一个HTML表格,其中的一些功能似乎超出了标准顶点的范围:数据表。当用户更新其中一行的信息时,我正在尝试重新呈现该表,以便反映更新的值。如果我使用apex:datatable这样可以正常工作,但是我失去了很多我必须在表格中添加的功能。

结构相当简单,但就是这样:

    <table>
        <thead>
            <tr>
                <th>Col 1</th>
            </tr>
        </thead>

        <tbody>
        <apex:outputPanel id="table-panel">

            <apex:repeat value="{!Parent}" var="row">
                <tr name="{!row.Id}">
                    <td>Cell 1</td>
                </tr>
                <apex:repeat value="Child__r" var="child">
                    <tr name="child-{!row.Id}">
                        <td>Child Cell 1</td>
                    </tr>
                </apex:repeat>      
            </apex:repeat>
        </apex:outputPanel>
        </tbody>

    </table>

这实际上是我正在尝试完成的功能,其下面列出了父对象的子项。到目前为止,rerender将我的所有表格元素转换为跨度并完全玷污了所有内容。是否有可能重新渲染非visualforce组件,或者,有没有一种方法可以在apex中重现这个功能:datatable?

谢谢!

2 个答案:

答案 0 :(得分:0)

很容易。试试这个,即使在重新渲染后也能正常使用:

<apex:panelGrid columns="1" width="400" id="myTable">

    <apex:facet name="header">
        <apex:outputText value="My table header"/>
    </apex:facet>

    <apex:repeat value="{!Object}" var="row">

        <apex:outputText value="{!row.name}" style="display:block;font-weight:bold;"/>

        <apex:repeat value="{!row.ObjectChild__r}" var="child">

            <apex:outputText value="{!child.name}"/> <br/>

        </apex:repeat> 

    </apex:repeat>         

</apex:panelGrid>

不,你可以恢复你的“myTable”。

答案 1 :(得分:0)

我实际上最终发现了apex:outputPanel元素的漂亮的小“布局”属性。将其设置为“阻止”完全解决了与此相关的所有问题。