ComponentOne 利用ガイド
[018] 編集時に数字型セルのデータをすべて削除したときに、ValidateEdit イベント内でゼロに変換しても、空白が表示される
移行ガイド > 各種移行資料 > WinForms 移行情報 > FlexGrid for WinForms 移行情報 > [018] 編集時に数字型セルのデータをすべて削除したときに、ValidateEdit イベント内でゼロに変換しても、空白が表示される
変更バージョン 2.6.20071.324
カテゴリ 編集・入力
対応策

詳細

旧バージョンでは、連結グリッドの数字型セルで、編集時にセルデータを削除して値を空白にしたときに、ValidateEdit イベント内でこのデータをゼロに変換する処理を行うと、セル移動後にゼロが表示されました。本バージョンでは、この場合、空白が表示されます。これは、データソースの DataColumn.AllowDBNull プロパティの値を尊重した動作に変更されたためです。

旧バージョンと同様の動作にするには、DataColumnのAllowDBNull 値を False に設定するか、または ValidateEdit イベント内でセルデータではなくエディタのTextプロパティを「0」に設定してください。

  1. DataColumn の AllowDBNull 値を False に設定する

    DataTable dt = new DataTable();
    dt.Columns.Add("Name", typeof(string));
    dt.Columns.Add("Amount", typeof(int));
    dt.Columns("Amount").AllowDBNull = false; // ** 空白の入力を禁止します **
    // ・・(データテーブル設定の詳細コードは省略)・・
    c1FlexGrid1.DataSource = dt;
    Dim dt As New DataTable
    dt.Columns.Add("Name", GetType(String))
    dt.Columns.Add("Amount", GetType(Integer))
    dt.Columns("Amount").AllowDBNull = False ' ** 空白の入力を禁止します **
    ' ・・(データテーブル設定の詳細コードは省略)・・
    C1FlexGrid1.DataSource = dt
  2. エディタの Text プロパティを「0」に設定する

    private void c1FlexGrid1_ValidateEdit(object sender, C1.Win.C1FlexGrid.ValidateEditEventArgs e)
    {
      if (c1FlexGrid1.Editor.Text.Trim.Equals(""))
      {
        // c1FlexGrid1(e.Row, e.Col) = 0 // セルデータを「0」に変換
        c1FlexGrid1.Editor.Text = 0; // エディタのTextプロパティを「0」に設定
      }
    }
    Private Sub C1FlexGrid1_ValidateEdit(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.ValidateEditEventArgs) Handles C1FlexGrid1.ValidateEdit
      If C1FlexGrid1.Editor.Text.Trim.Equals("") Then
        ' C1FlexGrid1(e.Row, e.Col) = 0 ' セルデータを「0」に変換
        C1FlexGrid1.Editor.Text = 0 ' エディタのTextプロパティを「0」に設定
      End If
    End Sub
関連トピック