MESCIUS SPREAD for ASP.NET 10.0J > 開発者の手引き > 製品の使用方法 > Visual Studioでの注意点 |
コントロールをプロジェクトに追加する方法については「コントロールのプロジェクトへの追加」を参照してください。
ここではVisual Studioで使用する際の注意点を紹介します。
製品のライセンスを作成するにはlicenses.licxファイルが必要です。設計時にコントロールをフォームに貼り付けるとlicenses.licxファイルが自動的に作成され、プロジェクトに組み込まれます。しかし、実行時にコントロールを動的に生成する場合などには、licenses.licxファイルは自動作成されません。 licenses.licxファイルが存在しない場合は、以下の手順でlicenses.licxファイルおよびApp_Licenses.dllを作成してください。
FarPoint.Web.Spread.FpSpread, FarPoint.Web.SpreadJ, Version=10.0.XXXX.XXXX, Culture=neutral, PublicKeyToken=a5fa960294d899e7
FarPoint.Web.Chart.FpChart, FarPoint.Web.Chart, Version=10.0.XXXX.XXXX, Culture=neutral, PublicKeyToken=a5fa960294d899e7
|
SPREADは、ASP.NET 2.0で追加されたデータソースコントロールをサポートします。データソースコントロールを使用してMicrosoft SQL Server、Microsoft Access、XML ファイル等のデータソースをコントロールにバインドすることができます。
従来のDataSetを使用したデータ連結と、Visual Studio 2005 で導入されたDataSource コントロールを使用したデータ連結は大きく異なります。
DataSet はアプリケーションに対して非接続型のデータベース アクセスモデルを提供します。SPREAD を DataSet に連結した場合、ユーザーが SPREAD 上で行った変更は SPREAD を更新したタイミングで DataSet に反映されます。これらの変更をデータベースに反映したい場合は、アプリケーション側で DataAdapter の Update メソッドを実行してデータベースを更新します。
一方、DataSource コントロールでは、従来 DataSet で必要としていた SQLCommand や DataAdapter の生成、DataSet へのデータの格納が隠蔽されています。これらは、 データ連結ウィザードによって自動的に構成されます。
DataSource コントロールを使用した場合、ポストバックのたびに DataSource.SelectCommand が実行され、SPREAD のデータモデル がリフレッシュされます。また、ユーザーがSPREADでデータを変更すると、 DataSource.UpdateCommand が実行され、自動的にデータベースが更新されます。今までの様にアプリケーション側でDataAdapterのUpdateメソッドを使用してデータベースを更新する必要はありません。
ただ、SPREAD のデータモデルがポストバックのたびにリフレッシュされることによって、次の処理が影響を受ける可能性があります。
例えば、SPREAD をデータベースに連結した状態で、小計行や合計行を追加したい場合など、ポストバック後も非連結行を表示し続けたいことがあります。 ただ、DataSource コントロールを使用すると SPREAD のデータモデルがポストバックのたびにリフレッシュされ、非連結行が失われてしまいます。 この場合、次のようにPageのPreRenderメソッドで非連結行を追加する方法があります。
protected void Page_PreRender(object sender, EventArgs e) { // シート最後に非連結行を追加 FpSpread1.ActiveSheetView.AddUnboundRows(FpSpread1.ActiveSheetView.RowCount, 1); }
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender 'シート最後に非連結行を追加 FpSpread1.ActiveSheetView.AddUnboundRows(FpSpread1.ActiveSheetView.RowCount, 1) End Sub
DataSource コントロールを使用すると SPREAD のデータモデルがポストバックのたびにリフレッシュされます。そのため、ユーザーが入力した数式が次回のポストバックで期待した通りに動作する保証はありません。製品では、DataSource コントロールを連結した場合、スプレッドシートの AllowUserFormulas プロパティを False に設定します。 ユーザーが入力した数式は無効となり、文字列として解析されます。
なお、サーバー側で数式を設定することが可能です。下記はシートに非連結行を追加し数式を設定する例です。ポストバックのたびに非連結行と数式を設定します。数式をViewStateに保存する必要がありませんのでSaveViewStateメソッドでクリアします。
protected void Page_PreRender(object sender, EventArgs e) { // シート最後に非連結行を追加 FpSpread1.ActiveSheetView.AddUnboundRows(FpSpread1.ActiveSheetView.RowCount, 1); // 非連結行に数式を設定 FpSpread1.ActiveSheetView.Cells[FpSpread1.ActiveSheetView.RowCount - 1, 0].Formula = "3 + 5"; } protected override object SaveViewState() { ' 非連結行の数式をクリアする FpSpread1.ActiveSheetView.Cells[FpSpread1.ActiveSheetView.RowCount - 1, 0].Formula = Null; return base.SaveViewState(); }
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender ' シート最後に非連結行を追加 FpSpread1.ActiveSheetView.AddUnboundRows(FpSpread1.ActiveSheetView.RowCount, 1) ' 非連結行に数式を設定 FpSpread1.ActiveSheetView.Cells(FpSpread1.ActiveSheetView.RowCount - 1, 0).Formula = "3 + 5" End Sub Protected Overrides Function SaveViewState() As Object ' 非連結行の数式をクリアする FpSpread1.ActiveSheetView.Cells(FpSpread1.ActiveSheetView.RowCount - 1, 0).Formula = Nothing Return MyBase.SaveViewState() End Function
なお、製品では従来の DataSet を使用したデータ連結も依然としてサポートしています。データを連結した状態で、非連結行や数式を設定したい場合には、DataSetを使用するという選択肢も有効です。
従来の DataSet を使用したデータ連結と、Visual Studio 2005 で導入されたDataSource コントロールを使用したデータ連結について、 Microsoft社にて提供されている技術情報「ASP.NET 2.0 におけるデータ アクセス」も併せてご覧ください。