この記事では、カスタム日付ピッカーセル(ドロップダウンカレンダーコンポーネントから日付の値を選択できるセル)の作成方法を示します。

カスタムセルボディの作成
ReoGridでは、セルボディインターフェースを使用して任意のカスタムセルタイプを作成できます。セルボディを作成するには、CellTypes.CellBodyクラスを継承するクラスを作成します。この例では、ドロップダウン対応のセルボディを作成するため、CellTypes.DropDownCellクラスを継承する必要があります。
public class DatePickerCell : DropdownCell
{
// our class members
}
このカスタムセルボディをワークシートに追加すると、空のドロップダウンセルが表示されます。
var worksheet = grid.CurrentWorksheet;
worksheet["B2"] = new DatePickerCell();
結果:

次に、空のドロップダウンパネルに標準の.NET日付ピッカーコントロールを追加します。
public class DatePickerCell : DropdownCell
{
private DateTimePicker picker = null;
public DatePickerCell()
{
// create a standard .NET date picker
picker = new DateTimePicker();
// handle its event
picker.ValueChanged += Picker_ValueChanged;
**// add date picker to drop-down cell panel**
**base.DropdownControl = picker;**
base.MinimumDropdownWidth = 220;
base.DropdownPanelHeight = 24;
}
...
}
エンドユーザーが選択した値を受け取るために、標準の.NET日付ピッカーイベントをハンドルする必要があります。
private void Picker_ValueChanged(object sender, EventArgs e)
{
if (this.Cell != null) this.Cell.Data = picker.Value;
}
また、セルボディが最初にセルに割り当てられた際に、OnSetupメソッドが呼び出されます。ここで、そのセルにいくつかのスタイルを設定します。
public override void OnSetup(ReoGridCell cell)
{
// call default OnSetup behavior
base.OnSetup(cell);
// give cell a small indent, since the space on the right side is already taken by the drop-down button
cell.Style.Indent = 3;
// Important! Set the cell date format to display dates correctly
cell.DataFormat = DataFormat.CellDataFormatFlag.DateTime;
}
結果:
