MESCIUS SPREAD for ASP.NET 10.0J
データソースとの連結

コントロールをデータソースに連結することができます。デフォルト設定によってコントロールを連結すると、データセットのデータは、データを連結したシートの列と行内に読み込まれます。列はデータセット内のフィールドに関連付けられ、行は各レコードを表します。

データソースに連結するには、以下の方法があります。

  1. データソースを直接連結

    GridViewやListViewコントロールといった、.NET Frameworkが提供する複合データバインドコントロールと同様の動作です。SheetView クラスDataSource プロパティまたは、DataSourceID プロパティに直接DataTableやDataSetオブジェクト、またSqlDataSource等のデータソースコントロールを設定します。

  2. データソースをデータモデルに連結

    DefaultSheetDataModel クラスを使用してデータモデルを作成し、SheetView クラスのDataModel プロパティに設定します。使用するデータソースは、DefaultSheetDataModel クラスのコンストラクタDataSource プロパティを使用して指定します。データモデルの詳細については「Data モデル」を参照してください。

複数のテーブルをもつデータソースにおいて、特定のデータテーブルだけを指定するには、 SheetView クラスのDataMember プロパティまたは、DefaultSheetDataModel クラスのDataMember プロパティを使用して、特定のデータメンバを指定します。

また、データソースを設定することで自動的にデータが連結されますが、DataBind メソッドを使用することで、任意のタイミングで連結することも可能です。

連結モードでは、供給されたデータソースがデータモデルによってラップされます。データモデルは、必要に応じて、データソースからは得られない追加データや対話機能(セルの数式、非連結行/列など)を提供することもできます。場合によっては、パフォーマンス上の理由から、カスタムデータモデルを独自に作成しなければならないこともあります。カスタムデータモデルの開発の詳細については、「シートモデルの使用」を参照してください。

メモ:実行時にコーディングでデータソースと連結し行の削除や更新を行う場合には、DataKeyFieldプロパティによる明示的なキーの設定が必要となります。
FpSpread1.ActiveSheetView.DataKeyField = "ID"

サンプルコード

次のサンプルコードは、XMLファイルをDataSetに読み込み、SPREADコントロールに連結する例です。作成したデータセットを直接SPREADコントロールに設定しています。

// XMLファイルからデータセットを生成します。
DataSet ds = new DataSet();
ds.ReadXml(MapPath("~/App_Data/data.xml"));

// アクティブシートにデータセットを連結します。
FpSpread1.ActiveSheetView.DataSource = ds;
' XMLファイルからデータセットを生成します。
Dim ds As New DataSet()
ds.ReadXml(MapPath("~/App_Data/data.xml"))

' アクティブシートにデータセットを連結します。
FpSpread1.ActiveSheetView.DataSource = ds        

次のサンプルコードは、データモデルとコントロールを連結する例です。

// XMLファイルからデータセットを生成します。
DataSet ds = new DataSet();
ds.ReadXml(MapPath("~/App_Data/data.xml"));

// データモデルを作成しコントロールと連結します。
FarPoint.Web.Spread.Model.DefaultSheetDataModel model = new FarPoint.Web.Spread.Model.DefaultSheetDataModel(ds);
FpSpread1.ActiveSheetView.DataModel = model;
' XMLファイルからデータセットを生成します。
Dim ds As New DataSet()
ds.ReadXml(MapPath("~/App_Data/data.xml"))

' データモデルを作成しコントロールと連結します。
Dim model As New FarPoint.Web.Spread.Model.DefaultSheetDataModel(ds)
FpSpread1.Sheets(0).DataModel = model        

コマンドバーの[更新]ボタンをクリックしてもデータセットが更新されない場合は、ポストバックのたびにデータが上書きされている可能性があります。これを回避するには、次のように、ページのLoadイベントにて、初回のロード時だけにデータが連結されるようにします。

if (!Page.IsPostBack)
{
     FpSpread1.DataBind();
}
If Not Page.IsPostBack Then
     FpSpread1.DataBind()
End If        

関連トピック

 

 


© MESCIUS inc. All rights reserved.