ディーバ Blog

大阪発 C#の会社、株式会社ディーバの Blog です。

Xamarin.Android SfDataGrid 改行でセルの編集を確定する

Syncfusion SfDataGrid のセル編集をキーボードの改行(Enter/Return キー)で編集を確定する方法です。

※ この記事の投稿時点の SfDataGrid のバージョンは v15.2.0.46 です。

f:id:jz5_diva:20170721211019j:plain

Editing 機能で Excel のセルのように編集できます。改行をハンドリングするには、CurrentCellBeginEdit イベントで処理します。

// _dataGrid: SfDataGrid
_dataGrid.CurrentCellBeginEdit += DataGrid_CurrentCellBeginEdit;
private async void DataGrid_CurrentCellBeginEdit(object sender, GridCurrentCellBeginEditEventArgs args)
{
    await Task.Delay(100);

    if (!(args.Column is GridTextColumn)) return;

    var row = _dataGrid.GetRowGenerator().Items.FirstOrDefault(x => x.RowIndex == args.RowColumnIndex.RowIndex);
    var column = (row.GetType().GetRuntimeProperties().FirstOrDefault(x => x.Name == "VisibleColumns").GetValue(row) as List<DataColumnBase>).FirstOrDefault(x => x.ColumnIndex == args.RowColumnIndex.ColumnIndex) as IElement;

    if ((column.Element as ViewGroup).ChildCount > 0)
    {
        var editView = (column.Element as ViewGroup).GetChildAt(0) as EditText;
        if (editView != null)
        {
            editView.SetOnEditorActionListener(this);
            editView.SetImeActionLabel("Done", ImeAction.Done);
            editView.SetSingleLine(true);
        }
    }
}