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は次ListのMyCustomRowとおりです。
myGrid1.setModel(new ListModelList(List<MyCustomRow> populatedList));
私にはいくつかの仮定がありますが、私が試したものは何でもうまくいきませんでした。jQueryイベントとイベントZK-Eventsは異なり、おそらく異なるコンテキストで分離されていることを念頭に置いています。(jQueryなどからイベントを発生させようとはしましたが..)
何か提案はありますか?全体として、私のアプローチは正しいですか、それとも別の方法がありますか? お時間をいただきありがとうございます。