トップ回答者
SqlDataSourceのEnableViewStateについて

質問
回答
-
> SqlDataSourceのEnableViewStateをTrueまたは、Falseに設定した場合、ど
> のような動作の変化があるのでしょうか?ポストバック前後で動的に設定が変わるプロパティや、バインドするデータ、
ユーザーインターフェイスがなければ、EnableViewState を True に設定して
も、コントロールは ViewState を保持しないそうです。SqlDataSource のプロパティをプログラムで動的に変えるようなことをしてい
なければ、そもそも ViewState を持っていないので、True にしようと False
にしようと何も変わらないということではないかと思います。以下のページに、ViewState に関する詳しい説明と、ViewState を表示/パー
スするサンプルコードがあります。このコードを使って、True/False を切り
替えた場合の変化を見てはいかがですか?ViewState: All You Wanted to Know
http://aspalliance.com/135- 回答としてマーク プログラム初心者です 2011年4月4日 3:24
-
基本的にViewSateは画面の状態を保持するものです。別の言い方をすれば画面に表示されるコントロールの状態を保持するものです。もし、この仕組みが無ければ自力でSession変数などを使って保存および復元のコードを書かなくてはなりません。
一方、SqlDataSourceは画面に表示するコントールではありません。データベースからデータをやり取りするコントロールです。よって、ViewSateは基本的に関係ありません。
ポストバックでGridViewからデータが失われるのを防ぎたいように受け取れましたが、それでよろしいでしょうか? もし、そうであれば、GridViewに表示しているデータテーブルをSession変数に入れ、ポストバック時にSession変数から復元する方法があります。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク プログラム初心者です 2011年4月4日 3:24
すべての返信
-
> SqlDataSourceのEnableViewStateをTrueまたは、Falseに設定した場合、ど
> のような動作の変化があるのでしょうか?ポストバック前後で動的に設定が変わるプロパティや、バインドするデータ、
ユーザーインターフェイスがなければ、EnableViewState を True に設定して
も、コントロールは ViewState を保持しないそうです。SqlDataSource のプロパティをプログラムで動的に変えるようなことをしてい
なければ、そもそも ViewState を持っていないので、True にしようと False
にしようと何も変わらないということではないかと思います。以下のページに、ViewState に関する詳しい説明と、ViewState を表示/パー
スするサンプルコードがあります。このコードを使って、True/False を切り
替えた場合の変化を見てはいかがですか?ViewState: All You Wanted to Know
http://aspalliance.com/135- 回答としてマーク プログラム初心者です 2011年4月4日 3:24
-
SurferOnWww様、返信ありがとうございます。
>SqlDataSource のプロパティをプログラムで動的に変えるようなことをしてい
>なければ、そもそも ViewState を持っていないので、True にしようと False
>にしようと何も変わらないということではないかと思います。アドバイス通りにTraceで確認しました。SqlDataSourceは、プログラムで
FilterExpressionやSelectCommandを動的に変更してもViewStateは、ないままのようです。
SqlDataSourceは、どのようなことをしてもViewStateは、保持されないのでしょうか?
よってSqlDataSourceは、EnableViewStateの設定はどちらに設定しても動作は同じ
ということでよろしいでしょうか? -
基本的にViewSateは画面の状態を保持するものです。別の言い方をすれば画面に表示されるコントロールの状態を保持するものです。もし、この仕組みが無ければ自力でSession変数などを使って保存および復元のコードを書かなくてはなりません。
一方、SqlDataSourceは画面に表示するコントールではありません。データベースからデータをやり取りするコントロールです。よって、ViewSateは基本的に関係ありません。
ポストバックでGridViewからデータが失われるのを防ぎたいように受け取れましたが、それでよろしいでしょうか? もし、そうであれば、GridViewに表示しているデータテーブルをSession変数に入れ、ポストバック時にSession変数から復元する方法があります。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク プログラム初心者です 2011年4月4日 3:24
-
trapemiya様、返信ありがとうございます。
>データベースからデータをやり取りするコントロールです。よって、ViewSateは基本的に関係ありません。
「ユーザーインターフェイスがなければ」、「SqlDataSourceは画面に表示するコントールではありません」の回答で理解できました。ありがとうございます。
>ポストバックでGridViewからデータが失われるのを防ぎたいように受け取れましたが、それでよろしいでしょうか?
現在、ASP.NETの学習中でそこまでは、まだ考えていませんでした。
ただ、GridView等は、設定によってポストバック後の処理に変化があったのに、SqlDataSourceは、
変化がなかったため知りたく、質問させていただきました。何も変化がないのであれば、
なぜそのようなプロパティの設定があるのでしょうか?