0

zul ファイルに表示する次の構造があり、Java コントローラーからクリニック オブジェクトのリストを取得しました。

zul でいくつかの zk コンポーネントを試しましたが、うまくいきませんでした。でどのコンポーネントを使用すればよいforEachですか?

  • リストボックス
  • ListItem
  • グリッド

表示する必要がある構造は次のとおりです。

For each clinic
{ 
    For each clinic.location 
    { 
        For each (clinic.location.provider) 
        { 
            Output (provider display name) 
        } 
        Output (clinic name) 
        Output (clinic.location address) 
        Output (clinic.locatoin telephone number) 
        Output (clinic.web address)
    }
}
4

3 に答える 3

1

ダリウスの回答で説明されているように<Grid><rows>コンポーネントで a を使用する方法の例を次に示します

<?page title="Result"?>
<zk>
    <window apply="org.zkoss.bind.BindComposer"
        viewModel="@id('vm') @init('fully.qualified.viewmodel.classname')"
        title="Result Window" border="normal" >
        <div>
            <grid>
                <rows>
                    <row>
                        <listbox model="@bind(vm.listname)">
                            <listhead>
                                <listheader label="Item Name"
                                    style="text-align:center;">
                                </listheader>
                                <listheader label="Attribute Value"
                                    style="text-align:center;">
                                </listheader>
                                <listheader label="Qualifier Value"
                                    style="text-align:center;">
                                </listheader>
                            </listhead>
                            <template name="model" var="item">
                                <listitem value="${item }">
                                    <listcell label="@load(item.name)"
                                        style="text-align:center;">

                                    </listcell>
                                    <listcell
                                        style="text-align:center;">
                                        <textbox
                                            value="@bind(item.attributeValue)"
                                            style="text-align:center;" />

                                    </listcell>
                                    <listcell
                                        label="@load(item.qualifierValue)"
                                        style="text-align:center;">
                                    </listcell>
                                </listitem>
                            </template>
                        </listbox>
                    </row>
                </rows>
            </grid>
        </div>

    </window>
</zk>
于 2013-02-24T08:02:48.053 に答える
0

これを達成する方法は複数あります

  • 個別のzulファイルをテンプレート行に含めます。これには、個別のビューモデルを持つグリッドが含まれます-このスタイルでは、ネストされたすべてのグリッドを一度に表示できますが、データの量が増えるとパフォーマンスの問題が発生します(行数= = ネストされたグリッドのビューモデルの数)
  • 独自のテンプレートを持つネストされたグリッド、およびビュー モデルのパラメーターとしてデータ モデルを含め、このグリッドをオンデマンドで表示します (ボタンのクリック、行のクリックなど) - これは、パフォーマンスの問題がない場合のより良い方法ですが、表示できるのは一度に 1 つのネストされたグリッド

最後の言葉 -ただしないでください

グリッドをグリッドにネストすることは非常に悪い設計です。これをレンダリングするのは非常に難しく、小さなデータにしか使用できないからです。私の意見では、これを行う最善の方法は、2 つの別個のグリッドを並べて作成し、最初のグリッドの行をクリックした後、2 番目のグリッドに追加データを表示することです。このようにして、多くのデータを使用しても、パフォーマンスの問題なしで非常に高速な GUI を実現できます。もう 1 つの方法は、グリッド行にポップアップを作成することです。これにより、追加のデータが表示されます。また、パフォーマンスが大幅に向上します。

于 2015-06-12T17:40:57.613 に答える