2012-03-05 3 views
1

ASP.netとデータベースのデータを含むリピータコントロールでフォームフィールドのテーブルを作成しました。ASP.netのクライアントサイドで生成されたコントロール/データにアクセスするにはどうすればよいでしょうか?

ユーザーは、jQueryを使ってリピータコントロール(これはレンダリング時にhtmlテーブルです)に新しい行を追加する行を追加できます。これらの行をクライアント側のhtmlテーブルに追加し、リピータには追加しません情報元)。

ユーザーは、私がリピーターからではなく、もちろん、直接編集行にアクセスすることができるよサーバーにデータを投稿した場合、新しいjQueryのは、行がリピーターに格納されていない生成しました。 (私はこれがそのようであるべきというのが私の前提と間違っている場合は、私にいくつかの記号を記入してください)

は、私はまたのRequest.Form変数を見ていたが、リピータコントロールがあまりにもそこにあります。私が見

唯一の解決策は、JSONオブジェクト内のすべての行データを格納し、それをサーバーに渡すことです。しかし、データをポストするためにJavascriptを使用せずに別の解決策があるなら、それは素晴らしいでしょう。

この問題を解決するにはどうすればよいですか?

答えて

0

[OK]を、私が言っている:それはForm.Requestデータにアクセスすることで、単に可能です。クライアント側で新しいフィールドを生成する場合、Request.Formには名前値でグループ化されたフィールド値が含まれているため、すべてのフォームフィールドに対して新しい名前属性値を設定する必要があります。また、別の行のクローン()と同じように新しい行を生成している場合、それらは同じになり、変更しなければRequest.Formでそれらを見ることができません。

別の解決策は、隠しフィールドにJSONオブジェクトと、それをすべてのフォームデータを保存することです。サーバー側で簡単にJSONオブジェクトを逆シリアル化して(おそらくJSONライブラリが必要です)、データにアクセスできます。 AJAXリクエストは必要ありません。

私は、最も良い方法はJSONオブジェクトの方法だと思います。 Request.Formを使ってJavscriptを少なくし、サーバー側のスクリプトを多く作成しました。

1

IMO - 変更された/新しい行にのみajax投稿を使用する必要があります。

あなたはページを投稿する必要はありません。 jsonを使用してajaxを送信する場合、新しい/編集された行の情報を含むjsonオブジェクトを作成し、サーバー(ashxを使用)はDBを更新できます。

ページの更新がありませんのでご注意ください。

P.S. ashx応答からの応答から行数を更新する必要があります。

+0

+1のJSONでのトリック。 –

0

は、私はあなたが厳密にjQueryとasp.netでこれを行うことができるようになりますか分かりません。 UpdatePanelを使用できます。そうでなければViewStateはあなたに悲しみを引き起こすでしょう。

+0

UpdatePanelの問題は、常に新しい行を追加してポストバックを行うことです。私はこれが本当に不必要で、ユーザーが新しい行を追加したときにパフォーマンス/スピードが低下すると思います(たとえば、この時点で正確に追加される新しい行にアクセスするためにタブを入力するとき)。 –

+0

私はUpdatePanelsで説明した問題に同意します。 ASP.netのWebフォームからMVCアプリケーションに移行する以外は、別の方法で処理することはできません。 ViewStateは悪夢です。 – shanabus

関連する問題