5

すべての列、すべての行の値をいつでも編集できる GridView があります。ユーザーがすべての変更を入力し、[保存] を 1 回クリックすると、すべての変更がコミットされます。

ユーザーは、[新規] ボタンをクリックして、GridView に新しい行を表示し (実際の G​​ridView に表示する必要があります)、必要なデータを入力し、[保存] をクリックして、すべての変更をデータベースに移動できる必要があります。 .

今。これが私を投げかけているユーザーケースです: ユーザーがページに到着し、いくつかの既存の行にいくつかの変更を加えてから、新しい行を追加し、新しい行にデータを入力し、[保存] をクリックして、すべての変更をデータベースに移動する必要があります。 .

ただし、新しい空の行を追加する唯一の方法は、GridView を再バインドすることです。これは、すべての変更が失われることを意味します。これは明らかにダメです。

したがって、私の質問は、GridView を再バインドすることなく、新しい空の編集可能な行を GridView に追加する方法は何ですか?

私が考えることができる唯一のことは、新しいボタンのクリックイベントで、GridView からすべてのデータを吸い出し (ユーザーの潜在的な編集を含む)、ViewState (またはその他のもの) に保存し、新しい行を追加し、グリッド。これは、私には少しハックに思えますが、GridView で ViewState をオフにできるはずです。

何か案は?

4

2 に答える 2

3

頭から離れて、2つのオプションを考えることができます。1 つ目は、バインドしている元の結果をグリッドにキャッシュすることです。別の行を追加する必要がある場合は、バインド先の datatabale にデータ行を追加してから、これをグリッドにバインドします。グリッドに変更がある場合は、データテーブルを更新する必要があります。すべての変更が行われ、ユーザーが保存ボタンをクリックすると、テーブルを反復処理して、DB をデータで更新できます。

このように見えるかもしれません

ページ読み込み

  • DBデータを取得してテーブルに入れる
  • テーブルをグリッドにバインドする
  • テーブルをキャッシュに保存する

ユーザーが新しい行を要求したとき

  • キャッシュされたデータ オブジェクトを取得します。
  • 変更されたすべての行を更新します
  • グリッドに空の行バインドを追加します

ユーザーがグリッドを保存するとき

  • キャッシュされたオブジェクトを取得します。
  • 最後の更新セットを作成する
  • 行をループして DB を更新する

これを行うもう1つの方法は、グリッドを動的に作成することですが、これには、説明したことを考えると、価値があるよりもはるかに多くの労力が必要になります.

于 2008-11-07T19:33:00.387 に答える
0

JavaScript を使用して新しい行を動的に追加し、保存コマンドで新しく追加された行を探すことができます。それはかなり一般的です。

于 2008-11-07T19:56:13.630 に答える