作成日: 2013/06/25 最終更新日: 2013/06/25
文書種別
使用方法
詳細
任意のコントロールを使用してセル編集を行うには、CellFactoryを継承するクラスを作成してCreateCellContentEditorメソッドをオーバーライドし、第2引数のBorder.Childプロパティに編集用のコントロールを設定します。
また、編集用コントロールに入力した値をセルに反映するためには、C1FlexGrid.CellEditEndedイベントでコントロールの値をセルに設定します。
下記の例ではDatePickerコントロールを使用してセル編集を行っていますが、その他のコントロールも利用可能です。
◎サンプルコード(Visual Basic)
◎サンプルコード(C#)
また、編集用コントロールに入力した値をセルに反映するためには、C1FlexGrid.CellEditEndedイベントでコントロールの値をセルに設定します。
下記の例ではDatePickerコントロールを使用してセル編集を行っていますが、その他のコントロールも利用可能です。
◎サンプルコード(Visual Basic)
Imports C1.Silverlight.FlexGrid
Public Sub New()
:
C1FlexGrid1.CellFactory = New MyCellFactory
End Sub
Private Sub C1FlexGrid1_CellEditEnded(sender As System.Object, e As CellEditEventArgs) Handles C1FlexGrid1.CellEditEnded
If e.Column = 1 Then
' 編集用コントロールの値をセルに設定します。
Dim border = TryCast(e.Editor, Border)
Dim dp = TryCast(border.Child, DatePicker)
C1FlexGrid1(e.Row, e.Column) = dp.SelectedDate
End If
End Sub
Public Class MyCellFactory
Inherits CellFactory
Public Overrides Sub CreateCellContentEditor(grid As C1FlexGrid, bdr As Border, range As CellRange)
If range.Column = 1 Then
' セル編集時に編集用コントロールを表示します。
Dim dp = New DatePicker()
dp.SelectedDate = CType(grid(range.Row, range.Column), System.Nullable(Of DateTime))
bdr.Child = dp
Else
MyBase.CreateCellContentEditor(grid, bdr, range)
End If
End Sub
End Class
Public Sub New()
:
C1FlexGrid1.CellFactory = New MyCellFactory
End Sub
Private Sub C1FlexGrid1_CellEditEnded(sender As System.Object, e As CellEditEventArgs) Handles C1FlexGrid1.CellEditEnded
If e.Column = 1 Then
' 編集用コントロールの値をセルに設定します。
Dim border = TryCast(e.Editor, Border)
Dim dp = TryCast(border.Child, DatePicker)
C1FlexGrid1(e.Row, e.Column) = dp.SelectedDate
End If
End Sub
Public Class MyCellFactory
Inherits CellFactory
Public Overrides Sub CreateCellContentEditor(grid As C1FlexGrid, bdr As Border, range As CellRange)
If range.Column = 1 Then
' セル編集時に編集用コントロールを表示します。
Dim dp = New DatePicker()
dp.SelectedDate = CType(grid(range.Row, range.Column), System.Nullable(Of DateTime))
bdr.Child = dp
Else
MyBase.CreateCellContentEditor(grid, bdr, range)
End If
End Sub
End Class
◎サンプルコード(C#)
using C1.Silverlight.FlexGrid;
public MainPage()
{
:
c1FlexGrid1.CellFactory = new MyCellFactory();
}
private void c1FlexGrid1_CellEditEnded(object sender, CellEditEventArgs e)
{
if (e.Column == 1)
{
// 編集用コントロールの値をセルに設定します。
var border = e.Editor as Border;
var dp = border.Child as DatePicker;
c1FlexGrid1[e.Row, e.Column] = dp.SelectedDate;
}
}
public class MyCellFactory : CellFactory
{
public override void CreateCellContentEditor(C1FlexGrid grid, Border bdr, CellRange range)
{
if (range.Column == 1)
{
// セル編集時に編集用コントロールを表示します。
var dp = new DatePicker();
dp.SelectedDate = (DateTime?)grid[range.Row, range.Column];
bdr.Child = dp;
}
else
{
base.CreateCellContentEditor(grid, bdr, range);
}
}
}
public MainPage()
{
:
c1FlexGrid1.CellFactory = new MyCellFactory();
}
private void c1FlexGrid1_CellEditEnded(object sender, CellEditEventArgs e)
{
if (e.Column == 1)
{
// 編集用コントロールの値をセルに設定します。
var border = e.Editor as Border;
var dp = border.Child as DatePicker;
c1FlexGrid1[e.Row, e.Column] = dp.SelectedDate;
}
}
public class MyCellFactory : CellFactory
{
public override void CreateCellContentEditor(C1FlexGrid grid, Border bdr, CellRange range)
{
if (range.Column == 1)
{
// セル編集時に編集用コントロールを表示します。
var dp = new DatePicker();
dp.SelectedDate = (DateTime?)grid[range.Row, range.Column];
bdr.Child = dp;
}
else
{
base.CreateCellContentEditor(grid, bdr, range);
}
}
}
旧文書番号
80199