0

環境:asp.net fx3.5

グリッドビューにobjectdatasourceを使用しています。最初に、顧客のジェネリックからのレコードをグリッドビューにロードしList<Attachments>ます。次に、すべての追加/削除が完了するまで、データベースにアクセスせずにグリッドビューからアイテムを追加/削除したいと思います。次に、ユーザーは[保存]ボタンを押してから、グリッドビューにアイテムを保持します。

私の質問は、objectdatasourceがgridviewに接続されているときに、gridviewでアイテムを追加/削除するにはどうすればよいですか?私の推測では、どういうわけかグリッドビューの行をジェネリックリストにキャストし直し、アイテムを追加/削除して、再バインドしますか?それも可能ですか?

4

3 に答える 3

1

ViewStateに一時的に保存できます。プロバイダークラス、つまり、ビューステートに格納しているリストに対して基本的なCRUD操作を実行するクラスが必要です。

于 2012-05-21T17:07:42.873 に答える
1

追加/削除時にポストバックを実行している、または実行できる場合は、変更をデータベースに保存することをお勧めします。変更に伴ってデータを保存しないと、情報が失われる可能性があります。追加/削除のためのajax呼び出しを使用して、ページ全体をリロードすることなく、よりエレガントで高速にすることができます。

また

クライアント側ですべての追加/削除を行い、最終的にデータベースに保存する場合は、クライアントストレージを使用して変更を一時的に保持し、最後に変更をサーバーに返送してデータベースにコミットできます。クライアントストレージに関する記事はこちらですが、古いブラウザではサポートされていない可能性があります

また

非表示フィールドに変更を加えることができます。たとえば、削除されたレコードの場合、削除されたレコードIDを格納する1つの非表示フィールドがあり、パターンが設定されたレコードが追加された非表示フィールドに、これらの非表示フィールドを使用してポストバックでデータベースを更新します。これにより、情報が失われる危険があります。方法

于 2012-05-21T15:41:58.030 に答える
0

グリッドイベントを使用してこのすべての情報を処理のために保存するだけなので、データソースに必要なのはselectメソッドだけです。これにより、レコードの更新/挿入が試行されなくなります。rowCommandイベントですべてのイベント処理を実行できます。

あなたがしようとしていることに関しては、私はそれが良い考えではないと思います。セッション内の複数のレコード、または個別のDBテーブルを追跡する必要があります(ただし、ポイントは何でしょうか?)。

于 2012-05-21T15:32:45.237 に答える