1

前の行をクリックすると、グリッド内の行を非表示/表示しようとしています (Java コードから動的に入力されます)。単純な MasterDetail コンポーネントをシミュレートします。Javaコードでクリックされた行の正しいインデックスを取得しますが、行の可視性の変更は機能しません! 誰かがこれで私を助けることができますか、これに似た方法がありますか?

ありがとう、プーヤ

ZUL のコードは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<zk xmlns="http://www.zkoss.org/2005/zul">
    <window id="callbackLogWindow"
            apply="CallbackLogWindowComposer"
            border="none" height="100%" width="100%"
            xmlns:w="http://www.zkoss.org/2005/zk/client">
        <grid id="callbackLogGrid" oddRowSclass="non-odd" height="100%">
            <columns>
                <column label="Logging Name" />
                <column label="Status" />
                <column label="DateTime" />
                <column label="Subject" />
                <column label="Replies" />
            </columns>
            <rows>
                <zk forEach="${callbackLogWindow$composer.callbacks}">
                    <row sclass='${forEachStatus.index % 2 != 0 ? "z-grid-odd" : ""}'
                    onClick="callbackLogWindow$composer.toggleRow(self.index)">
                        <custom-attributes callback="${each}"/>
                        <cell><label value="${callback.loggingName}" /></cell>
                        <cell><label value="${callback.resolved}" /></cell>
                        <cell><label value="${callback.callbackTime}" /></cell>
                        <cell><label value="${callback.subject}" /></cell>
                        <cell><label value="${callback.resolvedItemCount}" /></cell>
                    </row>
                    <row sclass='${forEachStatus.index % 2 != 0 ? "z-grid-odd" : ""}'>
                        <cell colspan="5">
                            <include src="callbackItem.zul" callback="${each}"/>
                        </cell>
                    </row>
                    <row>
                        <custom-attributes callback="${each}"/>
                        <button onClick="callbackLogWindow$composer.saveCallbackItems(callback)">
                           Save
                        </button>
                    </row>
                </zk>
            </rows>
        </grid>
    </window>
</zk>

そしてコントローラー:

public class CallbackLogWindowComposer extends SelectorComposer<Window> {

    @Inject private CallbackDao callbackDao;
    @Wire Grid callbackLogGrid;
    private List<Callback> callbacks = new ArrayList<Callback>();

    @Override
    public void doAfterCompose(Window window) throws Exception {

        super.doAfterCompose(window);
    }

    public List<Callback> getCallbacks() {

        callbacks = callbackDao.findAll();
        return callbacks;
    }

    public void toggleRow(int i) {

        Component row = callbackLogGrid.getRows().getChildren().get(i+1);
        row.setVisible(row.isVisible());
        callbackLogGrid.renderAll();
    }

    public void saveCallbackItems(Callback cb) {
        callbackDao.saveInTransaction(cb);
    }
}
4

2 に答える 2

2

私は確信が持てず、テストしていませんが、ここで 1 つのことを提案できます。Zk have属性を使用する とvisible="true/false"、この属性を各行に適用し、これを databean 変数にバインドできます。詳細については、表示したいレコードは、クラスのように別の変数を追加し、それを自分で制御します。行が変更されると、リストの他の項目を更新します。List<A> listlistdisplayAonClick

于 2013-09-24T10:43:40.247 に答える