日付ピッカーセルの作成

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

カスタムセルボディの作成

ReoGridでは、セルボディインターフェースを使用して任意のカスタムセルタイプを作成できます。セルボディを作成するには、CellTypes.CellBodyクラスを継承するクラスを作成します。この例では、ドロップダウン対応のセルボディを作成するため、CellTypes.DropDownCellクラスを継承する必要があります。

public class DatePickerCell : DropdownCell
{
  // our class members
}

このカスタムセルボディをワークシートに追加すると、空のドロップダウンセルが表示されます。

var worksheet = grid.CurrentWorksheet;
worksheet["B2"] = new DatePickerCell();

結果: 272

次に、空のドロップダウンパネルに標準の.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;
}

結果: 271


ページの内容は役に立ちましたか?