[Xuni:FlexGrid] 行または列ヘッダーがタップされたことを取得して処理を実行する方法(Xamarin.Forms)
対象製品
Xuni
詳細
FlexGridのセルをタップした場合、CellTappedイベントが発生します。
このイベントはGridCellRangeEventArgs型の引数を受け取ります。
この引数を利用して、以下の情報が取得可能です。
CellRange:タップされたセルの範囲を取得できるGridCellRangeクラス
CellType:セルのタイプを取得するプロパティ
CellRangeを利用して、タップされたセルの位置で判断することも可能ですが、CellTypeプロパティには、セルの属性を表す値が格納されています。
このCellTypeプロパティの内容を、GridCellType列挙体を利用して対象のセルが以下のどのタイプであるかを判断できます。
CellTappedイベントの中で、CellTypeを判断すればヘッダーがタップされた場合の処理を実行できます。
なお、規定の動作では、列ヘッダーをタップするとソート処理が実行されます。
サンプルコード
C#(Xamarin.Forms)
また、ヘッダーが表示されていない場合は上記の処理は実行されません。
Xuni > 技術情報 > ドキュメント > FlexGrid
このイベントはGridCellRangeEventArgs型の引数を受け取ります。
この引数を利用して、以下の情報が取得可能です。
CellRange:タップされたセルの範囲を取得できるGridCellRangeクラス
CellType:セルのタイプを取得するプロパティ
CellRangeを利用して、タップされたセルの位置で判断することも可能ですが、CellTypeプロパティには、セルの属性を表す値が格納されています。
このCellTypeプロパティの内容を、GridCellType列挙体を利用して対象のセルが以下のどのタイプであるかを判断できます。
GridCellType.Cell // 通常のデータセル GridCellType.ColumnHeader // 列ヘッダーセル GridCellType.RowHeader // 行ヘッダーセル GridCellType.TopLeft // 左上セル(行ヘッダーと列ヘッダーの交差部分)
CellTappedイベントの中で、CellTypeを判断すればヘッダーがタップされた場合の処理を実行できます。
なお、規定の動作では、列ヘッダーをタップするとソート処理が実行されます。
サンプルコード
C#(Xamarin.Forms)
// CellTappedイベントの処理記述 grid.CellTapped += (object sender, Xuni.Forms.FlexGrid.GridCellRangeEventArgs e) => { // タップした場所のセルタイプで処理を分岐 switch (e.CellType) { case Xuni.Forms.FlexGrid.GridCellType.Cell: // データセルが表示されていない領域では処理をキャンセル if (e.CellRange.Row >= 0 && e.CellRange.Column >= 0) { var celldata = grid.Cells[e.CellRange.Row, e.CellRange.Column].ToString(); DisplayAlert("タップ位置", "データセルの内容 : " + celldata, "OK"); } else { e.Cancel = true; } break; case Xuni.Forms.FlexGrid.GridCellType.ColumnHeader: DisplayAlert("タップ位置", "列ヘッダー", "OK"); break; case Xuni.Forms.FlexGrid.GridCellType.RowHeader: DisplayAlert("タップ位置", "行ヘッダー", "OK"); break; case Xuni.Forms.FlexGrid.GridCellType.TopLeft: DisplayAlert("タップ位置", "左上隅", "OK"); break; default: break; } };
また、ヘッダーが表示されていない場合は上記の処理は実行されません。
Xuni > 技術情報 > ドキュメント > FlexGrid