0

標準の apex:datatable では把握できない機能を備えた HTML テーブルが Visualforce ページに設定されています。ユーザーがいずれかの行の情報を更新すると、更新された値が反映されるようにテーブルを再レンダリングしようとしています。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>

これは本質的に私が達成しようとしている機能であり、その下に親オブジェクトの子がリストされています。現在、再レンダリングはすべてのテーブル要素をスパンに変換し、すべてを完全に文字化けします。Visualforce 以外のコンポーネントを再表示することは可能ですか? あるいは、この機能を apex:datatable で再現する方法はありますか?

ありがとう!

4

2 に答える 2

0

私は実際に、apex:outputPanel 要素の気の利いた小さな「レイアウト」属性を発見することになりました。これを「ブロック」に設定すると、これに関連するすべての問題が完全に解決されました。

于 2012-08-31T18:44:11.043 に答える
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」を再レンダリングできます。

于 2012-08-14T12:02:16.587 に答える