- PR -

DataGrid EnableViewState=falseでコマンドが呼び出されない。

1
投稿者投稿内容
m-scripts
会議室デビュー日: 2004/08/28
投稿数: 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 ]
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2004-08-30 13:54
引用:

[ASP.NET]DataGridコントロールでビューステートを使用せずにページ表示するには?
を参考にして、ページングソートまではできるようになりましたが、
Editコマンドを呼び出したあとの、Update,Cancelが呼び出されず
困っています。



DataGridのEnableViewStateを無効しても、ページング、並べ替えは可能です。でも、編集を行うには、EnableViewStateを有効にしないと動作しないと思います。

少しでも高速化したいときは、

1)DataGridのEnableViewStateをTrueにして
2)TemplateColumnを使用します。

ItemTemplateでは、Labelコントロールにデータをバインドさせます。LabelはEnableViewState=Falseにします。

EditItemTemplateでは、TextBoxコントロールにデータをバインドさせます。TextBoxのEnableViewState=Trueにします。

DataGridの通常行はViewStateに保存しないで、編集行のみViewStateに保存しますので、ViewStateをかなり削減できます。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)