SPREADデザイナで作成したデザインのままデータバインドを行う方法

C#, ITSPREAD

SPREADデザイナでデザインを弄った後、
DataTableとSPERADをデータバインドしたら弄ったデザインが反映されない。
という現象が発生しました。
デザインをデザイナーで弄ったままにするための方策を記していきます。


プロパティ設定

対象SPREADのシートの
DataAutoSizeColumnsプロパティ
DataAutoCellTypesプロパティ
DataAutoHeadingsプロパティ
AutoGenerateColumnsプロパティ
をfalseに設定します。

fpSpread1.ActiveSheet.DataAutoSizeColumns = false;
fpSpread1.ActiveSheet.DataAutoCellTypes = false;
fpSpread1.ActiveSheet.DataAutoHeadings = false;
fpSpread1.ActiveSheet.AutoGenerateColumns = false;

データバインド

対象SPREADシートのプロパティを弄ったら、
データバインドを行います。
対象SPREADシートのDataSourceにバインドしたいDataTableを指定します。
対象SPREADシートの各カラムのDataFieldにバインドしたいDataTable列名を指定します。

//GetHogeを実行し、DataTableを取得
DataTable dt = GetHoge();
//シートにDataTableをバインド
fpSpread1.ActiveSheet.DataSource = dt;
//シートの各列にDataTableの列をバインド
fpSpread1.ActiveSheet.Columns[accountIndex].DataField = "ACNT_CODE";
fpSpread1.ActiveSheet.Columns[shopNameIndex].DataField = "ACNT_S_NAME";
fpSpread1.ActiveSheet.Columns[collateOnCountAllIndex].DataField = "COLLATE_ON_COUNT_ALL";
fpSpread1.ActiveSheet.Columns[collateOffCountAllIndex].DataField = "COLLATE_OFF_COUNT_ALL";
fpSpread1.ActiveSheet.Columns[collateOnCountIndex].DataField = "COLLATE_ON_COUNT";

上記設定により、
デザイナで設定したデザイナを崩すことなくデータバインドが可能になります。

C#, ITSPREAD

Posted by raishin