ビューステートは、クライアントベースの状態管理機能を実現します。データはページ内の隠しフィールドに書き込まれます。
デフォルトのコントロール設定では、セッションを使用してデータを保存します。 小さなデータ モデルであれば、ビューステートが最適です。 大きなデータセットを使用する場合には、これ以外の状態管理手段を推奨します。
利点と欠点
ビューステートを使用する利点は次のとおりです。
- サーバーの資源を必要としません。
- コードの記述量が少なくて済みます。
- データベースへのアクセス量が少なくて済みます。
- SPREADがすべてのデータを管理します。ユーザーによる変更は、コントロールのデータモデルに自動的に保存されます。
ビューステートを使用する欠点は、パフォーマンスに影響が出ることです。 ビューステートはページ自体に保存されるため、大量のデータが保存されると、ユーザーが表示または送信しようとする場合にページの送信速度が遅くなる可能性があります。
設定方法
データをビューステートに保存するには、SheetView クラスのIsTrackingViewState プロパティをtrueに設定します。既定値はtrueです。また、FpSpread クラスのSaveViewStateToSession プロパティをfalseに設定します。
サンプルコード
次のサンプルコードは、ビューステートを使用してデータを保存する方法を示します。
protected void Page_Load(object sender, System.EventArgs e)
{
if (IsPostBack) return;
// OLE DBによってNWIND MS Accessサンプルに接続します。
OleDbConnection thisConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\\NWIND.MDB");
// 接続を開きます。
thisConnection.Open();
// 関連するデータテーブル、行、列を保持するDataSetを作成します。
DataSet thisDataSet = new DataSet();
OleDbDataAdapter orderAdapter = new OleDbDataAdapter("SELECT EmployeeID, LastName, FirstName, Title FROM Employees", thisConnection);
orderAdapter.Fill(thisDataSet, "Employees");
FpSpread1.ActiveSheetView.DataSource = thisDataSet;
FpSpread1.ActiveSheetView.DataMember = "Employees";
thisConnection.Close();
thisConnection.Dispose();
// データをビューステートに保存します。
FpSpread1.ActiveSheetView.IsTrackingViewState = true;
FpSpread1.SaveViewStateToSession = false;
}
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If (Me.IsPostBack) Then Return
' OLE DBによってNWIND MS Accessサンプルに接続します。
Dim thisConnection As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\NWIND.MDB")
' 接続を開きます。
thisConnection.Open()
' 関連するデータテーブル、行、列を保持するDataSetを作成します。
Dim thisDataSet As New DataSet()
Dim orderAdapter As New OleDbDataAdapter("SELECT EmployeeID, LastName, FirstName, Title FROM Employees", thisConnection)
orderAdapter.Fill(thisDataSet, "Employees")
FpSpread1.ActiveSheetView.DataSource = thisDataSet
FpSpread1.ActiveSheetView.DataMember = "Employees"
thisConnection.Close()
thisConnection.Dispose()
' データをビューステートに保存します。
FpSpread1.ActiveSheetView.IsTrackingViewState = True
FpSpread1.SaveViewStateToSession= False
End Sub
関連トピック