作成日: 2025/02/19 最終更新日: 2025/07/30
文書種別
不具合
発生環境
.NET 8
状況
修正済み
詳細
日付型の列において、セルをダブルクリックして編集モードに切り替えて値を編集した後、ENTERキーを押下して編集を終了すると、入力した日付が反映されず、編集前の値に戻ります。
回避方法
この問題は2025J v1(9.0.20251.1094)で修正されました。
2025J v1より前のバージョンでの回避方法は以下になります。
PrepareCellForEditおよびCellEditEndedイベントを使用し、以下のようなコードを設定します。
private DateTime? editedDate = null;
private bool isCancel = false;
private void Flexgrid_CellEditEnding(object sender, GridCellEditEventArgs e)
{
isCancel = e.CancelEdits;
}
private void Flexgrid_CellEditEnded(object sender, GridCellEditEventArgs e)
{
if (sender is FlexGrid grid)
{
if (grid.Columns[e.CellRange.Column].DataType == typeof(DateTime))
{
if (editedDate.HasValue && !isCancel)
grid[e.CellRange.Row, e.CellRange.Column] = editedDate.Value;
}
}
}
private void flexgrid_PrepareCellForEdit(object sender, GridCellEditEventArgs e)
{
editedDate = null;
if (sender is FlexGrid grid)
{
if (grid.Columns[e.CellRange.Column].DataType == typeof(DateTime))
{
if (grid[e.CellRange.Row, e.CellRange.Column] is DateTime date)
{
if (e.Editor is C1DatePicker picker)
{
picker.SelectedDate = date;
picker.LostFocus += (s, e1) =
{
editedDate = picker.SelectedDate;
};
}
}
}
}
}