FlexGrid for WPF
新規追加行を表示する
基本操作 > 行 > 新規追加行を表示する

FlexGrid for WPF で新規行の追加を許可するには、AllowAddNew プロパティを True に変更します。行の追加を許可すると、最終行に新規追加のテンプレート行が表示されます。また、CellFactory クラスを継承したカスタムセルファクトリを使用して新規追加のテンプレート行に任意の文字列を表示し、ユーザーに新規行への入力テキストをプロンプトすることも可能です。

次のコードでは、グリッドをデータソースと連結していることを前提として、AllowAddNew プロパティおよび CellFactory クラスの使用方法を示します。

注意:FlexGrid for WPF の場合は NewRowWatermark プロパティの代わりに CellFactory クラスを使用する方法が提供されています。

【実行例】

コードのコピー
Public Sub New()
    InitializeComponent()
    Dim p = Product.GetProducts(10)
    C1FlexGrid.ItemsSource = p
    'グリッドのAllowAddNewプロパティを設定します
    C1FlexGrid.AllowAddNew = True
    'カスタムセルファクトリを作成します
    C1FlexGrid.CellFactory = New CustomCellFactory()
End Sub
コードのコピー
//グリッドのAllowAddNewプロパティを設定します
C1FlexGrid.AllowAddNew = true;

//カスタムセルファクトリを作成します
C1FlexGrid.CellFactory = new MyCellFactory();

次のように、カスタムセルファクトリを使用して新しい行への入力をプロンプトするマスクを設定します。

コードのコピー
Private Class CustomCellFactory
    Inherits CellFactory
    Public Overrides Sub CreateCellContent(grid As C1FlexGrid, bdr As Border, rng As CellRange)
        '新しい行を追加する場合、以下のマスクを設定します
        MyBase.CreateCellContent(grid, bdr, rng)
        If rng.Column = 0 AndAlso rng.Row = grid.Rows.Count - 1 Then
            Dim txt = TryCast(bdr.Child, TextBlock)
            If txt IsNot Nothing Then
                txt.Text = "新しいレコードを追加してください..."
                txt.Opacity = 0.65
                txt.FontStyle = FontStyles.Italic
                txt.IsHitTestVisible = False

            End If
        End If
    End Sub
End Class
コードのコピー
class MyCellFactory : CellFactory
{
    public override void CreateCellContent(C1FlexGrid grid, Border bdr, CellRange rng)
    {
        //新しい行を追加する場合、以下のマスクを設定します
        base.CreateCellContent(grid, bdr, rng);
        if (rng.Column == 0 && rng.Row == grid.Rows.Count - 1)
        {
            var txt = bdr.Child as TextBlock;
            if (txt != null)
            {
                txt.Text = "新しいレコードを追加してください...";
                txt.Opacity = 0.65;
                txt.FontStyle = FontStyles.Italic;
                txt.IsHitTestVisible = false;
            }
        }
    }
}