作成日: 2015/05/01 最終更新日: 2015/11/30
文書種別
制限事項
詳細
C1FlexGridのDataSourceに何もデータを設定しないDataTableを設定後、C1FlexGridのデータを直接変更すると、DataTableのデータを変更した場合に比べて、非常に時間がかかります。
この現象は、データバインド時の制限となります。データバインド時には、C1FlexGridのセルの値を直接変更するのではなく、バインディングソース側のデータを編集してください。
この現象は、データバインド時の制限となります。データバインド時には、C1FlexGridのセルの値を直接変更するのではなく、バインディングソース側のデータを編集してください。
回避方法
String型のデータの場合、変更する文字列をDataTableのデータとして設定してから、C1FlexGridのDataSourceとして設定します。
※ 以下はセルに空文字("")を設定する例を示しています。
◎サンプルコード(VB)
◎サンプルコード(C#)
なお、数値型データの場合、上記コードのデータ設定部分を以下のように置き換えてください。
※ 以下はセルに100を設定する例を示しています。
(VBコードの場合)dt.Rows(row)(col) = "" ⇒ dt.Rows(row)(col) = CDec(100)
(C#コードの場合)dt.Rows[row][col] = ""; ⇒ dt.Rows[row][col] = (decimal)100;
※ 以下はセルに空文字("")を設定する例を示しています。
◎サンプルコード(VB)
Private Sub SetData()
dt = New DataTable()
dt.Columns.Add("a")
dt.Columns.Add("b")
dt.Columns.Add("c")
dt.Columns.Add("d")
For row As Integer = 1 To 9
Dim newRow As DataRow = dt.NewRow()
dt.Rows.Add(newRow)
Next
For row As Integer = 0 To dt.Rows.Count - 1
For col As Integer = 0 To dt.Columns.Count - 1
dt.Rows(row)(col) = ""
Next
Next
Me.c1FlexGrid1.DataSource = dt
End Sub
dt = New DataTable()
dt.Columns.Add("a")
dt.Columns.Add("b")
dt.Columns.Add("c")
dt.Columns.Add("d")
For row As Integer = 1 To 9
Dim newRow As DataRow = dt.NewRow()
dt.Rows.Add(newRow)
Next
For row As Integer = 0 To dt.Rows.Count - 1
For col As Integer = 0 To dt.Columns.Count - 1
dt.Rows(row)(col) = ""
Next
Next
Me.c1FlexGrid1.DataSource = dt
End Sub
◎サンプルコード(C#)
private void SetData()
{
dt = new DataTable();
dt.Columns.Add("a");
dt.Columns.Add("b");
dt.Columns.Add("c");
dt.Columns.Add("d");
for (int row = 1; row < 10; row++)
{
DataRow newRow = dt.NewRow();
dt.Rows.Add(newRow);
}
for (int row = 0; row < dt.Rows.Count; row++)
{
for (int col = 0; col < dt.Columns.Count; col++)
{
dt.Rows[row][col] = "";
}
}
this.c1FlexGrid1.DataSource = dt;
}
{
dt = new DataTable();
dt.Columns.Add("a");
dt.Columns.Add("b");
dt.Columns.Add("c");
dt.Columns.Add("d");
for (int row = 1; row < 10; row++)
{
DataRow newRow = dt.NewRow();
dt.Rows.Add(newRow);
}
for (int row = 0; row < dt.Rows.Count; row++)
{
for (int col = 0; col < dt.Columns.Count; col++)
{
dt.Rows[row][col] = "";
}
}
this.c1FlexGrid1.DataSource = dt;
}
なお、数値型データの場合、上記コードのデータ設定部分を以下のように置き換えてください。
※ 以下はセルに100を設定する例を示しています。
(VBコードの場合)dt.Rows(row)(col) = "" ⇒ dt.Rows(row)(col) = CDec(100)
(C#コードの場合)dt.Rows[row][col] = ""; ⇒ dt.Rows[row][col] = (decimal)100;
旧文書番号
81271