2012-02-16 9 views
1

をリロードするときに行を永続化する方法をjqgrid:は、状況のいくつかの情報をグリッド

は、私は10行(修正高さのBEC)のグリッドビューを持っていると言うが、私のデータレコードは、10件の以上のレコードを持っている - ので、そこになります垂直スクロールバーです。

行14,16と17を編集(または削除)したいとします。 行14を選択するときに、onselect関数を使用して外部フォームを呼び出します。 外部フォームが送信されると、データが保存され、トリガーreloadgridを実行してグリッドを更新します。 [編集したレコードに関連する他のテーブルのデータも変更したいので、jqgridに付属のeditformは使用しませんでした。]

この接続(再読み込みグリッド)では、グリッド全体がリフレッシュされ、 。 次に、行16までスクロールしてそれをクリックする必要があります。これは後続のレコードの続きで続きます...

グリッドに最新の更新データをリフレッシュさせる手段があるのだろうかと疑問に思っていましたが、最初の行には戻っていませんが、我々は見ている?

ありがとうございます。

答えて

0

グリッドを再ロードする必要がありますか?デフォルトでJqgridは、編集された行を編集時に置くか、削除時に削除された行をグリッドから削除します。したがって、必要なのは、リロードグリッドをfalseに設定することだけです。編集/削除すると、情報がサーバーに送信され、それに従ってデータベースが更新されます。成功すると、グリッド自体はコンテンツをリロードせずにコンテンツを置き換えます。

デフォルトでリロードグリッドが呼び出された場合、コンテンツ全体が置き換えられ、コントロールは最初の1行目に移動します。

データベースに新しい行を挿入し、グリッドにデータベースの主キーが必要な場合は、グリッドを再ロードすることが望ましいです。

+0

グリッドは、他のデータへの参照ルックアップとしてのみ機能します。スペースの種類によって、グリッドにはすべてのフィールドが表示されませんでした。代わりに、私は外部フォームを使用してデータを更新し、ajaxを使用してデータを保存します。その方法では、グリッドセルが更新されていません。だから、セルを更新するために、私は更新されたデータベースからデータを取り出すリロードを行いました。現在、私はsetSelectionを使用しています。私は念頭に置いてrowidを保持して、リロードした後、私は行のsetSelectionを、そのような助けをする。他のよりよい方法があるのか​​不思議です。 –

+0

フォームの編集に行くことができます。 UIに表示したくないすべてのグリッド列に対してhidden = trueを設定しますが、editable = trueを設定します。こうすることで、フォームを開いて特定の行を編集すると、フォーム内の編集可能なすべてのコンテンツが表示されます。 – Ani

+0

この代替案は、既存のコードに多くの変更が加えられるので、私は試してみませんでしたが、可能です。しかし理論的には可能です。グリッドをリフレッシュせずにデータが更新されます。したがって、行を維持し、情報の行を更新します。おそらく最高のレコードに行くことがとても耐え難くなるときにのみこれを試みます。提案していただきありがとうございます。 –

関連する問題