0

3 つTabsあり、各タブにGrid.

それぞれのデータGridはデータベースから取得されるためrowRenderer、グリッドにデータを入力するために使用しています。次のコードは、3 つのグリッドすべてに共通です。

<grid id="myGrid1" width="950px" sizedByContent="true" rowRenderer="com.example.renderer.MyRowRenderer">

行はDoubleboxオブジェクトから構築されます。データが正常に入力されました。

問題:

クライアント側で複数セルの編集を処理する必要があります。編集は、特定のセルをマウスでクリックして値を入力することで行います。

例として、ユーザーが最初の行の最初のセルを編集し、値が同じ行の他のすべてのセルと 3 つのグリッドすべてに反映される必要があるとします (したがって、ユーザーが現在表示していない 2 つのグリッドも同様です。でtabpanes)。私はjQueryこの値の伝播を行うために使用していますが、問題なく動作します。

次のようにjQueryを渡しています。

doublebox.setWidgetListener(Events.ON_CHANGING, jQuerySelectors);
doublebox.setWidgetListener(Events.ON_CHANGE, jQuerySelectors);

これにより、1 つのセルの値を変更することが可能になり、その変更は、jQuery セレクターによってフィルター処理された他のすべてのセルに即座に (視覚的に) 表示されます。

問題は、値がすべてのセルに視覚的に分散されていることですが、Gridデータをデータベースに保存しようとすると、バックグラウンド値が古い値になります。コンポーネントは、すべてのセル値が変更されたZK-Gridことを認識していないと想定しています。jQueryそれにもかかわらず、グリッドを保存するときに既に NEW 値 (フォーカスを入力/残す/変更) を持つセルを手動でクリックすると、その特定のセルで NEW 値が正しくなります。多分それは私がこれをどのように解決できるかのヒントです。

値を抽出する方法のコードGrid:

Grid tGrid = (Grid) event.getTarget().getFellow("myGrid1");
ListModel model = tGrid.getModel();
MyCustomRow tRow = (MyCustomRow)model.getElementAt(i); 

私のモデルGridは次ListMyCustomRowとおりです。

myGrid1.setModel(new ListModelList(List<MyCustomRow> populatedList));

私にはいくつかの仮定がありますが、私が試したものは何でもうまくいきませんでした。jQueryイベントとイベントZK-Eventsは異なり、おそらく異なるコンテキストで分離されていることを念頭に置いています。(jQueryなどからイベントを発生させようとはしましたが..)

何か提案はありますか?全体として、私のアプローチは正しいですか、それとも別の方法がありますか? お時間をいただきありがとうございます。

4

2 に答える 2

2

あなたの問題はまさにあなたが期待しているものです。
Zk には独自のイベント システムがあり、jq を気にしませ
ん。それは jq であり、zk は DOM を監視しません。

あなたの問題を解決する方法。

  1. 「ZK-Way」を使用する:
    サーバー側でリッスンし、そこで物事を変更するだけです。
    選択されていないものが更新可能かどうかはわかりませんが 、の選択イベントでコンポーネントをTabs
    更新できると確信しています。Grid
    Tab

  2. 自分で zk イベントを発生させる:
    知っておく必要があることは、zk docに書かれています。
    基本的に、クライアント側でデータを収集し、サーバー側で jsonオブジェクトからデータを抽出してサーバーに送信
    し、更新しますEventzAu.send()
    Grids


作業が少なく、トラフィックに顕著な違いはないはずなので、最初の方法をお勧めします。

于 2013-05-15T11:48:04.667 に答える