我在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?
谢谢!
答案 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元素的漂亮的小“布局”属性。将其设置为“阻止”完全解决了与此相关的所有问题。