MESCIUS SPREAD for ASP.NET 10.0J > 開発者の手引き > データ連結 > データソースとの連結 |
コントロールをデータソースに連結することができます。デフォルト設定によってコントロールを連結すると、データセットのデータは、データを連結したシートの列と行内に読み込まれます。列はデータセット内のフィールドに関連付けられ、行は各レコードを表します。
データソースに連結するには、以下の方法があります。
GridViewやListViewコントロールといった、.NET Frameworkが提供する複合データバインドコントロールと同様の動作です。SheetView クラスのDataSource プロパティまたは、DataSourceID プロパティに直接DataTableやDataSetオブジェクト、またSqlDataSource等のデータソースコントロールを設定します。
DefaultSheetDataModel クラスを使用してデータモデルを作成し、SheetView クラスのDataModel プロパティに設定します。使用するデータソースは、DefaultSheetDataModel クラスのコンストラクタやDataSource プロパティを使用して指定します。データモデルの詳細については「Data モデル」を参照してください。
複数のテーブルをもつデータソースにおいて、特定のデータテーブルだけを指定するには、 SheetView クラスのDataMember プロパティまたは、DefaultSheetDataModel クラスのDataMember プロパティを使用して、特定のデータメンバを指定します。
また、データソースを設定することで自動的にデータが連結されますが、DataBind メソッドを使用することで、任意のタイミングで連結することも可能です。
連結モードでは、供給されたデータソースがデータモデルによってラップされます。データモデルは、必要に応じて、データソースからは得られない追加データや対話機能(セルの数式、非連結行/列など)を提供することもできます。場合によっては、パフォーマンス上の理由から、カスタムデータモデルを独自に作成しなければならないこともあります。カスタムデータモデルの開発の詳細については、「シートモデルの使用」を参照してください。
メモ:実行時にコーディングでデータソースと連結し行の削除や更新を行う場合には、DataKeyFieldプロパティによる明示的なキーの設定が必要となります。 |
次のサンプルコードは、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