2009-07-17 5 views
0

したがって、各列が 'BoundField'であるASP.NET GridViewコントロールがあります。私はTemplateField(ItemTemplate/EditItemTemplate)を作成しませんでした。なぜなら、BoundField行を「編集」フィールドに変換するためにJQueryを使用することを計画していたため、その行がクリックされたときに各セルのテキストをテキストボックスまたはテキストエリアに変換するだけでした。これはすべてのクライアント側で行われます。Jqueryを使用してGridViewデータを変更すると、サーバーイベントに戻ることはありません

これまでのところ、すべてのクライアントサイドの項目がうまくいきます。しかし、私はサーバー側でイベントハンドラをトリガするグリッドの各行に[保存]ボタンがあります。そのサーバー側の方法では、私はその現在の行の値を取得しようとするが、jquery/javascriptを使用してフィールド/データを変更する前に、それらはすべてOLDセルの値です。

行の各セルを反復するとき、はレンダリング時と同じ状態です。

私が理解しようとしているのは、グリッドの状態が、サーバーにポストバックするときにレンダリングされたときとまったく同じ状態を保っているときに、このすばらしいjavascript/jqueryのすべてを行う理由は何ですか?

誰かがこれにいくつかの光を当ててください! ありがとう!

答えて

0

GridViewコントロールはViewStateを使用してポストバック間で状態を保持します。ポストバックを実行すると、ViewStateから以前の状態がロードされます。クライアント側のJavascriptで行った変更は無視されます。これは単にコントロールがどのように機能するかです。

インライン編集でGridViewコントロールを使用し続ける場合は、ポストバック経由で編集モードに移行するのが最も簡単な方法です。

もう1つの方法は、各行のフィールドの先頭を非表示にすることです。その後、Javascriptで表示することができます。サーバー上の値にアクセスできます。

さらに別のオプションはポストバックではなくAjaxコールを使用するため、ボタンをクリックするとグリッドが再レンダリングされません。しかし、これは、クライアント側のコードでグリッドから値を手動で収集し、それをサーバーに渡す必要があることを意味します。

+0

私はこのサイトが大好きです。皆さんはとても素早く答えます。ありがとう。 これよりも簡単だと思っていましたが、今はずっと良くなっています。私はwebmethodへのajax呼び出しを行うだろうと思う。 ありがとう! – 29er

関連する問題