- - PR -
DataGrid EnableViewState=falseでコマンドが呼び出されない。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-08-28 05:36
DataGrid のViewStateによる通信量を減らそうと思い、
DataGridをEnableViewState=falseとして、 実行しようとしています。 [ASP.NET]DataGridコントロールでビューステートを使用せずにページ表示するには? を参考にして、ページングソートまではできるようになりましたが、 Editコマンドを呼び出したあとの、Update,Cancelが呼び出されず 困っています。 Page_Loadコマンドは、 「その復元処理によりデータ連結後の状態のDataGridコントロールが再現される」 状態を作り出すために、以下のようにしています。 private void Page_Load(object sender, System.EventArgs e) { if ( !IsPostBack ) { sortField.Text = "Name"; DataTable dt = DBUtil.runQuery(DefaultSql); this.DataGrid1.DataSource = dt; Session["Master"] = dt; MyCurrentPageIndex = 0; } else { this.DataGrid1.DataSource = Session["Master"]; } this.DataGrid1.CurrentPageIndex = MyCurrentPageIndex ; sort(); this.DataGrid1.DataBind(); } このようにすれば、連結された状態で、コマンドが呼び出せると思っていたのですが、、、。 どなたかご教授いただければ幸いです。 [ メッセージ編集済み 編集者: m-scripts 編集日時 2004-08-28 05:37 ] | ||||
|
投稿日時: 2004-08-30 13:54
DataGridのEnableViewStateを無効しても、ページング、並べ替えは可能です。でも、編集を行うには、EnableViewStateを有効にしないと動作しないと思います。 少しでも高速化したいときは、 1)DataGridのEnableViewStateをTrueにして 2)TemplateColumnを使用します。 ItemTemplateでは、Labelコントロールにデータをバインドさせます。LabelはEnableViewState=Falseにします。 EditItemTemplateでは、TextBoxコントロールにデータをバインドさせます。TextBoxのEnableViewState=Trueにします。 DataGridの通常行はViewStateに保存しないで、編集行のみViewStateに保存しますので、ViewStateをかなり削減できます。 | ||||
|
投稿日時: 2004-08-30 17:50
.NET TIPS > [ASP.NET]DataGridコントロールでビューステートを使用せずにページ表示するには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/070novspager/novspager.html にて、CurrentPageを頁のViewStateに保存していますが、EditItemIndex, SelectedIndexも 保存する必要があるでしょう。 また、ViewStateに保存されたプロパティの復元はLoadではなくInitが適切かと。 |
1