2011-02-01 12 views
1

リピーターといくつかのフィールドを持つ更新パネルがあります。ユーザーがフィールドの詳細を記入すると、Viewstateに保持されているコレクションが移入され、リピーターにバインドされます。リピーターと編集可能なフィールドを持つUpdatePanel

これで、updatepanelが更新され、リピーターにユーザーがフォームに入力したばかりの値が新しい項目に含まれるようになりました。

また、そのリピーターの一部として編集ボタンがあり、これをクリックすると、ユーザーが最初に入力したデータがフォームフィールドに入力されます。

私がしたいのは、このデータを編集してアイテムを保存することですが、コレクション/ビューステートに追加するのではなく、ユーザーが選択したアイテムを編集してコレクション/ビューステートに反映させます。

例えば、2つのフィールドを持つフォームを想像:

名前: 年齢:私はボブと46を入力して保存しヒット

リピータには、「編集」ボタンが付いたボブ46のエントリが表示されるようになりました。ユーザーが編集ボタンをクリックすると、フォームフィールドにBobと46が再度入力されます。

ユーザーはそれからBob Age 47に変更し、保存をヒットします。今度はその代わりに2つのエントリ(Bob 46とBob 47)があります.Bob 46はBob 47に更新されます。

ほんとうに希望はありますが、私はその主旨を説明したと思いますそれ。重要なことは覚えておくと、これは更新パネルですべて起こっているので、Viewstateを使用してリピータに移入するコレクションを格納しています。

答えて

0

あなたの質問は、ASP.NETのUpdatePanelがどのように機能するかについて少し混乱していることを示しています。

UpdatePanelを更新するために「部分的」ポストバックを実行すると、実際にページが完全に実行され、UpdatePanelとの関連性にかかわらずページライフサイクルのすべての部分を実行します。次に、UpdatePanelがページ上で更新されます。この動作により、ページの外観がより速くなり、クライアント側でレンダリング時間を節約できたと思いますが、実際には、UpdatePanelをリフレッシュするたびに完全なポストバックを行っています。

リピーターを保持するためにUpdatePanelを使用する場合は、データを保持するために何か特別な処理を行う理由はありません。通常のリピータメソッドを使用して追加、編集などしてください。私がここで紛失しているという別の要件がない限り、ViewStateにデータを格納する特別な理由はありません。 UpdatePanelの更新をトリガーしたいものがあれば、そのことを確実にする必要がありますが、それについての混乱はありません。

+0

わかりません。上記のシナリオを前提とすると、ユーザーがフォームを記入しヒットすると、リピーターはデータバインドされます... viewstate /その他のデータソースが使用されていない場合はどうなりますか?私はおそらくそれをひどく説明したでしょうが、あなたがフォームが何回も何度も記入されると想像すれば、例えばBob 46、John 23、Mary 55など。これらはすべてリピータのデータソースに追加されますビューステート/セッションが使用されていない(と私はまだDBにコミットしたくない)場合、私はそれを行うのですか? – scaryjones

+0

@scaryjones私は、あなたがUpdatePanelのためにViewState _specifically_を使用する必要はないということを明確にしましたが、そうでなければあなたのニーズに合っているかどうかは確かです。Repeaterコントロールを使用する場合は、サーバーサイドでItemCommandイベントを処理することで、ボタンクリックのすべてのロジックを処理します。そのハンドラでは、DBバックエンドではなくコレクションを更新できます。つまり、RepeaterではなくListViewまたはGridViewを使用することを検討しましたか?ロジックは少し直感的かもしれません。 – Andrew

関連する問題