は、「」にGridViewのDataSourceIdを設定し、私はSqlDataSourceコントロールにGridViewコントロールをバインドする場合は、初めてページが作成されたGridViewは
を失うことになり、GridViewのデータソースから取得した列が表示されます。私はGridView.DataSourceIDが
protected void Page_Load(object sender, EventArgs e)
{
...
if (IsPostBack)
GridView1.DataSourceID = "";
...
}
をnullまたは空の文字列にするように設定ポストバックの場合しかし、その後、GridViewのは、まったくの行は表示されません。しかし、それはなぜですか?
GridViewがEnableViewstateをtrueに設定していると仮定すると、ページが最初に作成されたときにデータソースから取得した行を表示できるはずです。 私は、フレームワークがDataSourceIdが変更され、GridViewが以前のデータソースからのデータを必要としないことをフレームワークが認識していると主張することができますが、フレームワークは空の文字列またはnull参照がデータソースおよび以前のデータソースから取得したデータを削除しませんでしたか?
EDIT
ありがとう:あなたがNULLまたはしDataSourceIDを設定した後
こんにちは、
基本的に何が起こっているのです空のストリンコントロールは、コントロールの消費者から、データをまったくバインドしないことを示す(ViewStateデータさえも)ことを指示として受け取ります。コントロールはバインディングの前にDataSourceIDをチェックし、空の文字列の場合はEnsureDataBoundメソッドでDataBindを行いません。だから、
あなたは、Page_Loadの(内部でnullにDataSourceIDを設定している場合)に、GridViewはViewStateは以前からのデータを含む、DataSourceIdがチェックされ、その後まで、(をPage_Load後くらいに起きている)は、結合前にDataSourceIdモーメントをチェックしますPage_Load()内でデータソースを使用できるようにする必要があります(たとえば、ポストバックの原因となったイベントに登録されたイベントハンドラ内でも使用できます)。
私は()(をPage_Load内)NullにDataSourceIDを設定している場合、私は私の古いスレッドを検討してきた...とにかく...、その後、ポストバックに私はまだデータにアクセスすることができましたGridViewで(DataSourceIDがチェックされるまで)Label1.Text = GridView.Rows []。Cells []。Text; – SourceC