2012-04-07 6 views
1

上に複数のチェックボックスを検出項目がオンであるかオフであるかを表す各項目の横にあるチェックボックスが表示されます。アイテムが多数あるため、アイテムはページングを使用して表示されます。ASP.NET MVC 3 - 汚れた場合、私はアイテムの長いリストを持っていると私は、ユーザーにそれらを表示したいのですが、私はASP.NET MVC 3.</p> <p>を使用している複数のページ

ページが読み込まれると、アイテムがオンになっている場合にチェックボックスがオンになります。ユーザーはアイテムをページすることができ、チェックボックスをオンまたはオフにします。

アイテムの状態が変更された場合にのみ送信ボタンを有効にしたいとします。ユーザーがリストを参照して変更を加えたときにアイテムのリストがダーティー状態にあるかどうかを検出する最適な方法は何ですか?

+0

http://www.knockoutjs.com – danludwig

+0

@danludwig - ノックアウトは、問題の一部を助けるだけです。 –

+0

@MystereManあなたが正しいかもしれない、私は変更を加えながらページングに関する部分を覆しました。しかし、ページングがサーバー(ajax)の代わりにクライアント上で行われる場合、observableを使用してチェックボックスがダーティ/サブミットボタンが有効になっているかどうかを計算することはできませんか? – danludwig

答えて

1

スクロールまたはajaxのページ更新を実行するかどうかによって、これはどのように異なりますか。

新しいページ情報でページを再ロードするだけの場合は、以前選択したアイテムを追跡するために何らかの状態が必要です。これは、セッションでも、一時テーブルでも行うことができます。一時テーブルはセッションのリセット後も存続し、サーバーファームのシナリオでは機能します。

いずれの場合でも、あなたのページのポストバックをチェックボックスでクリックするか、次のページに投稿してください(どちらの場合でもpost-redirect-get patternを実行します)。ページがリフレッシュされると、コレクションが汚れているかどうかの表示を返し、送信ボタンを有効にする必要があります。

ユーザーは選択の途中で歩き回り、30分後などに戻ることができることに注意してください。ログインが有効でセッションを使用している場合、セッションがリサイクルされている可能性があります。

Ajaxを実行している場合は、変更の実行リストを保持する必要があります。そのため、後でユーザーが選択解除すると、送信ボタンを再び無効にすることができます。このリストを隠しフィールドに残し、いずれかのajaxが各チェックボックスを一時テーブルにポストするか、または非表示フィールドに合計を保持して、サブミットが呼び出されたときに変更を適用することができます。あなたの隠しフィールドには、あなたが変更したIDのリストが含まれています(チェックされているかチェックされていない)。フィールドが空の場合は、ボタンを無効にし、有効でない場合は有効にします。

+0

お返事ありがとうございます。あなたには多くの良い点があります。彼らが私のためにどのように動くかを見ていきます。 – tranmq

関連する問題