作成日: 2023/01/13 最終更新日: 2023/01/13
文書種別
使用方法
詳細
連結グリッドの日付型セルに空白を表示するために、2通りのケースが考えられます。
(1)日付型セルに空白を表示し、データソースの値もクリアする
日付型(DateTime型)のセルをコードでクリアするために、セルの値に空白文字( "" )を設定しても、表示はクリアされず、"0001/01/01 0:00:00"が表示されます。C1FlexGridが内部的に空白文字をDateTime.MinValueに置き換えるためです。
日付型セルに空白を表示するには、空白文字の代わりにDBNull.Valueを設定してください。
この場合、バインドしているデータソースの値もクリアされます。

◎サンプルコード(VB)
(メモ)
DBNull.Value以外に、以下のような設定でも空白表示となり、データソースがクリアされます。
これらの値は、C1FlexGridにより内部的にDBNull.Valueに置き換えられるためです。
・文字列型のデータを設定
・Nothing(C#では null)を設定
◎サンプルコード(VB)
(2)表示だけを空白にし、データソースの値はそのままにする
単に表示だけを空白にするには、オーナー描画の機能を利用し、要件に合致したセルのTextプロパティを空白文字にするか、または背景と枠を独自に描画してください。
※ 以下のコードでは、ケース(1)と同じコードを使用して事前にデータ設定を行っています。
◎サンプルコード(VB)
(1)日付型セルに空白を表示し、データソースの値もクリアする
日付型(DateTime型)のセルをコードでクリアするために、セルの値に空白文字( "" )を設定しても、表示はクリアされず、"0001/01/01 0:00:00"が表示されます。C1FlexGridが内部的に空白文字をDateTime.MinValueに置き換えるためです。
日付型セルに空白を表示するには、空白文字の代わりにDBNull.Valueを設定してください。
この場合、バインドしているデータソースの値もクリアされます。
◎サンプルコード(VB)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' データの設定
Dim dt As DataTable = New DataTable("TEST")
dt.Columns.Add("Column1", GetType(DateTime))
For i As Integer = 0 To 4
dt.Rows.Add(DateTime.Today)
Next
dt.AcceptChanges()
C1FlexGrid1.DataSource = dt
End Sub
Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click
C1FlexGrid1(1, 1) = DBNull.Value
End Sub
◎サンプルコード(C#)
public Form1()
{
InitializeComponent();
// データの設定
DataTable dt = new DataTable("TEST");
dt.Columns.Add("Column1", typeof(DateTime));
//dt.Columns[0].AllowDBNull = true; //ヌル値の設定を許可
for (int i = 0; i < 5; i++)
{
dt.Rows.Add(DateTime.Today);
}
dt.AcceptChanges();
c1FlexGrid1.DataSource = dt;
}
private void button1_Click(object sender, EventArgs e)
{
c1FlexGrid1[1, 1] = DBNull.Value;
}
(メモ)
DBNull.Value以外に、以下のような設定でも空白表示となり、データソースがクリアされます。
これらの値は、C1FlexGridにより内部的にDBNull.Valueに置き換えられるためです。
・文字列型のデータを設定
・Nothing(C#では null)を設定
◎サンプルコード(VB)
C1FlexGrid1(1, 1) = "A"
C1FlexGrid1(2, 1) = Nothing
◎サンプルコード(C#)
c1FlexGrid1[1, 1] = "A";
c1FlexGrid1[2, 1] = null;
(2)表示だけを空白にし、データソースの値はそのままにする
単に表示だけを空白にするには、オーナー描画の機能を利用し、要件に合致したセルのTextプロパティを空白文字にするか、または背景と枠を独自に描画してください。
※ 以下のコードでは、ケース(1)と同じコードを使用して事前にデータ設定を行っています。
◎サンプルコード(VB)
C1FlexGrid1.DrawMode = DrawModeEnum.OwnerDraw
・・・(途中省略)・・・
Private Sub C1FlexGrid1_OwnerDrawCell(sender As Object, e As OwnerDrawCellEventArgs) Handles C1FlexGrid1.OwnerDrawCell
If e.Row = 2 Then
' 文字列の消去(その1)
e.Text = ""
'e.Text = String.Empty
'' 文字列の消去(その2)
'e.DrawCell(DrawCellFlags.Background Or DrawCellFlags.Border)
'e.Handled = True
End If
End Sub
◎サンプルコード(C#)
c1FlexGrid1.DrawMode = DrawModeEnum.OwnerDraw;
・・・(途中省略)・・・
private void c1FlexGrid1_OwnerDrawCell(object sender, OwnerDrawCellEventArgs e)
{
if (e.Row == 2)
{
// 文字列の消去(その1)
e.Text = "";
//e.Text = string.Empty;
//// 文字列の消去(その2)
//e.DrawCell(DrawCellFlags.Background | DrawCellFlags.Border);
//e.Handled = true;
}
}