質問

100件のレコードを取得して、ページに表示するとします。ユーザーは、ページ上の2つのレコードのみを更新します。次に、2つのレコードのみを更新し、他の98は更新しないようにします。

ページに1つ送信してから、更新された2つを何らかの方法で把握し、更新のために2つだけをデータベースに送信するのが最善ですか?

「どういうわけか」とはのように見えますか

または、各行にupdate-submitボタンがあり、関連付けられているレコードのみを更新しますか?

役に立ちましたか?

解決

もちろん、これを行う方法はいくつかあります。一般に、Javascriptを使用して、変更されたレコードのみのPOSTデータを収集することにより、トラブルとサーバー側の処理を節約できます。これがどのように機能するかについての2つの考え:

1)ajaxルートに移動し、 live -editingを実行します。そのため、レコードはテーブルに表示され、編集できないように見えます。ユーザーが特定の行をクリックすると、Javascriptを使用して適切なHTMLフォームをその場で作成することにより、その行が編集可能になります。次に、送信ボタンまたは他のハンドラー(フォーカスを別のテーブル行に移動する)を使用して、DBを更新するPOSTをトリガーします(好みのajaxメソッドを介して非同期で)。幸いなことに、主流のJavascriptフレームワークはこの分野で大いに役立ちます。

2)チェックボックス-行が編集されるたびに、チェックボックスがチェックされます。送信ボタンがクリックされたら、javascriptを使用して、チェックボックスがオンになっている行のすべてを取得してPOSTデータを送信します。ユーザーは、送信する前にボックスのチェックを外してその行の変更をキャンセルできます。

他のヒント

jQueryまたは他のJavaScriptライブラリを使用してAjaxし、各行にボタンを配置および更新します。

この質問には多くの回答がありますが、ある程度は開発ツールと「感触」に依存します。サイトの。

Ajax呼び出しを実装して行ごとに更新を行う場合、これは論理的には行ごとにボタンがあり、行が変更されたときにAjax呼び出しで更新するように思えます。

これは、切断されたデータセットを解決するために設計された単なるシナリオであり、ADO.netはこれらを非常にうまく処理します。

これまでどおり、答えは" It Depends!"

です。

ユーザーが入力フィールドを変更すると、JavaScriptを使用して各フィールドを変更済みとしてマークできます。更新する行のIDとダーティフラグを持つ非表示フィールドを作成します。 (is_dirty_ $ idなど)JavaScriptで、非表示フィールドをダーティとして設定するonChangeハンドラーを作成します。入力が変更されたとき。

代わりに、表示する実際のフィールドごとに非表示フィールドを作成できます。非表示フィールドには初期値が含まれます。サーバー側の各フィールドをチェックして、何が変更されたかを判断してください。

おそらく、last_modified日付を各レコードの非表示フィールドとして保存する必要があります。これにより、別のユーザーが同じレコードを更新した場合、「このレコードは別のユーザーによって更新されました」というエラーメッセージを表示できます。または同様。

1つの送信ボタン。私は1つ以上を使用するかもしれない場合を予測できましたが、一般的な場合は1つだけです。 (注意、これは私にはWebページの質問のように見えるので、私はその仮定で答えています。)

追跡の変更を処理できる3つの方法があります:

JavaScript:非表示フィールドを更新するコントロールにonChange()関数を配置します。その非表示に値がある場合、関連するレコードを更新します。ブラウザーにJSが必要であり、どのフィールドを更新するかを指示せず、どのレコードのみを指示します。

多くのフォームフィールド:各コントロールで非表示フィールドを配置し、戻ってきたときにすべてを比較します。これは見苦しいですが、更新するフィールド(レコードだけでなく)を知ることができます。また、誰かが開始した変更を元に戻したかどうかを知ることができます。

セッション:元の値をセッション変数に入れて、値が戻ったときに比較を行うことができます。これは、多くの隠しフィールドよりも少しエレガントであり、ポストバックされたデータで遊んでいる人にはあまり開かれません(隠されたフィールドであっても、戻ってくるものを信頼しないでください)。ブラウザのCookieとサーバーテクノロジのセッションが必要です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top