グリッド機能
新しいグリッド コントロールは、ユーザーの生産性を高め、データのより興味深いビューを構築し、データの有意義な洞察を得るために使用できるいくつかの便利で強力な機能を提供します。 この記事では、次の機能について説明します。
- 算出値の表示
- システムの前に入力する
- 数式の評価
- 表形式データのグループ化 (グリッド内のグループ化 機能を使用して個別に有効化)
- 列の凍結化 (グリッド内で列の凍結化 機能を使用して個別に有効化)
- 列幅の自動調整
- 展開可能な列
算出値の表示
財務と運用アプリでは、ユーザーは各数値列の算出値をグリッドに表示できます。 グリッドの下部にあるフッター セクションにこれらの算出値が表示されます。
[]
10.0.29 より前のバージョンでは、合計がサポートされている唯一の算出値です。 ただし、バージョン 10.0.29 では、組織が拡張グリッド集計機能を有効にしている場合、次の 4 つの算出値から選択できます:
- 最小
- 最大
- 合計
- 平均
1 つの列に表示できる算出値のタイプは 1 つのみです。 ただし、グリッドの各列は、異なるタイプの算出値を表示するように構成できます。
グリッドで、1 つ以上の行が選択されている場合、選択した行の値に基づいて行の計算値が更新されます。
グリッド フッターの表示
財務と運用アプリでは、すべての表形式のグリッドの下部にフッター領域があります。 フッターには、グリッドに表示されるデータに関連する貴重な情報が表示されます。 この情報の例を次に示します。
- テーブルで選択された行の数 (複数のレコードを選択した場合)
- 構成済の数値列の下の算出値 (たとえば総計など)
- データセットの行数
このフッターは、既定では非表示になっていますが、簡単に表示することができます。 グリッドのフッターを表示するには、グリッドのヘッダーにあるグリッド オプションボタンを選択し、フッターを表示オプションを選択します。 特定のグリッドのフッターをオンにすると、ユーザーがフッターの非表示を選択するまで、その設定が記憶されます。 フッターを非表示にするには、グリッド オプションメニューのフッターの非表示を選択します。
算出値を含む列の指定
現在、既定で算出値が表示される列はありません。 代わりに、この設定は、グリッドで列の幅を調整する場合のように、1 回の活動と見なされます。 列の算出値を表示するように指定すると、その設定は、次にページにアクセスしたときにも使用されます。
算出値を表示する列を構成するには、次の 2 つの方法があります。
算出値を表示する列を選択して長押し (または右クリック) します。 拡張グリッドの集計 機能が有効の場合は、列の合計を表示する を選択し、目的の算出値を選択します。 その機能が無効の場合は、この列の合計 を選択します。 このアクションにより、次の 3 つのイベントが発生します。
- グリッドのフッターが表示されます。
- 列の算出値を表示する基本設定が保存されます。
- この列と、算出値を表示するために以前に構成したその他すべての列の目的の計算が開始されます。 算出値を表示するために必要な時間は、データセットのサイズによって異なります。
フッターが表示されると、算出値を表示したい列の下にある 合計を表示する (または 拡張グリッドの集計機能 が有効の場合は、算出値を選択する) を選択します。 構成された列がない場合は、すべての数値列のフッターでボタンが使用可能になります。
少なくとも 1 つの列が構成され算出値が表示されると、合計を表示する (または 算出値を選択する) ボタンは、ホバーまたはフォーカスでのみ使用できます。 ボタンを選択すると、この列に算出値を表示するための基本設定が保存されるので、その基本設定は今後ページにアクセスするときに適用されます。 フッターでは、この状態は列に表示されるダッシュによって示されます。 (データセットが十分に小さい場合は、算出値が直ちに表示されます。)
設定を誤り、特定の列の算出値を表示する必要がなくなった場合は、列を選択して長押し (または右クリック) し、合計を非表示にする を選択します (または、拡張グリッドの集計機能が有効の場合は、列の合計を表示する> なし を選択)。 または、その列のフッターで 合計を非表示にする (または 算出値を非表示にする) を選択します。 この設定は、今後のページへのアクセスのために保存されます。
集計値の計算
フッターが表示されているページに移動して、算出値を表示するように列が既に構成されている場合、それらの値がフッターに表示されない場合があります。 この動作は、ページ上のデータセットのサイズによって異なります。 データセットが十分小さい場合は、算出値が自動的にデータセットの行数と共に表示されます。 構成した列の下のフッターにダッシュがある場合、データセットが大きすぎてシステムが算出値をすぐに表示できません。 この場合、値を計算するには明示的なアクションが必要です。 値を計算するには、フッターの 計算 ボタンを選択します。 または、合計を表示したい列を選択して長押し (または右クリック) し、この列の合計 を選択します (または 拡張グリッドの集計機能が有効の場合は、列の合計を表示する を選択して目的の算出値を選択)。
計算の完了に時間がかかりすぎる場合は、キャンセル を選択していつでも操作を取り消すことができます。 場合によっては、データセットが大きすぎると集計値 (組織が決めた制限) が計算されません。 この場合、他のデータをフィルター処理するよう通知されます。
メモ
システム管理者は、クライアント パフォーマンス オプション ページの 各グリッド パラメーターのローカル レコードの最大件数 を調整することで、集計計算に使用できるレコード件数の制限を変更できます。 既定値は 25,000 レコードです。 この値が大きすぎるとユーザーのマシンの使用可能メモリが消耗する可能性があるため、この値を調整する際には注意が必要です。 レコード件数が 50,000 件を超えないことを推奨します。
データセットの行を更新、削除、または作成すると、算出値が自動的に更新されます。
システムの前に入力する
多くの業務シナリオでは、システムにデータを迅速に入力する機能が非常に重要となります。 新しいグリッド コントロールが導入されるまでは、変更できるデータは現在の行だけでした。 そのため、行内で変更を行った後は、システムが現在の行の変更を正常に検証し (行の作成の場合) 新しい行の作成に関連付けられているすべてのロジックを実行するまで、ユーザーは別の行に切り替えまたは新しい行を作成することができませんでした。 これらの操作が完了するまでの待機時間を短縮し、ユーザーの生産性を向上させるために、新しいグリッドではこのアクションが非同期になるように調整されています。 ユーザーは、前行の検証と行作成のロジックが保留されている間に、新しい行を作成するか、他の行に移動して変更を行うことができます。
[]
この新たな動作に対応するために、グリッドが編集モードとなっている場合は、行ステータスの新たな列が行選択列の右側に追加されました。 この列は、次のいずれかのステータスを示します:
- 空白 – 状態の画像がない場合は、その行がシステムによって正常に保存されたことを示します。
- 処理保留中 – この状態は、その行の変更がまだサーバーによって保存されていないが、処理すべき変更のキューに含まれていることを示します。 グリッドの外部でアクションを実行する前に、保留中のすべての変更が処理されるのを待つ必要があります。 さらに、これら行のテキストは、行の未保存状態を示すイタリック体で表示されます。
- 無効な状態 – この状態は、行の処理中に警告またはメッセージが発生し、システムがその行の変更を保存できなかった可能性があることを示します。 以前のグリッドでは、保存操作が失敗した場合、問題を直ちに修正するために強制的に列に戻されました。 しかし、新しいグリッドでは、検証の問題が発生したことが通知されますが、行内の問題を修正するタイミングはユーザー決めることができます。 問題を修正する準備ができたら、手動でフォーカスを行に戻すことができます。 または、この問題を修正する アクションを選択することもできます。 このアクションにより、問題のある行にすぐにフォーカスが戻り、グリッドの内側または外側で編集を行うことができます。 この検証警告が解決されるまで、後続の保留行の処理が停止されることに注意してください。
- 一時停止 – この状態は、行の検証により、ユーザー入力を必要とするポップアップ ダイアログ ボックスが起動されたために、サーバーの処理が一時停止されたことを示します。 ユーザーが他の行にデータを入力している可能性があるため、ポップアップ ダイアログ ボックスはすぐには表示されません。 代わりに、ユーザーが処理を再開することを選択した際に表示されます。 この状態には、ユーザーに状況を知らせる通知が伴います。 通知には、ポップアップダ イアログ ボックスを表示する 処理の再開 アクションが含まれています。
システムより前にデータを入力する場合の違い
システムを処理する場所より先にデータを入力すると、データ入力がいくつか変更される可能性があります。
- 検索ドロップダウン リストがないこと、同じ行の別の列に移動した後にフィールド値が検証されないこと、最初は列に既定値が表示されないことがわかります。 この動作は、システムより前に作成や更新を行う前に実行されます。 ただし、現在編集している場所にシステムが対応すると、標準のエクスペリエンスが再開されます。 通常は既定値を受け取るフィールドを変更した場合、サーバーで行の処理が開始されると、その変更が既定フィールド値を上書きします。
- 下矢印 キーを使用して新しい行を作成すると、グリッド内のすべての列が編集可能として表示されます。 既定では、フォーカスが新しい行の最初の列に設定されます。 この列は、レガシ グリッドで初期フォーカスを受け取った列と異なる場合、または 新規 ボタンを選択した後にフォーカスを受け取った列と同じ場合があります。 組織でシステムをカスタマイズし、下矢印 キーを選択した場合に初期フォーカスを受け取る列を変更できます。 詳細については、下矢印キーを使用して新しい行が作成されたときに初期フォーカスを受け取る列を指定する セクションを参照してください。 いずれにしても、パーソナル化を使用してデータ入力で使用する各グリッドを最適化できます。 特に、フィールドの順序を変更して、最初の列がデータ入力を開始する列にすることができます。 また、一般的なデータ入力のフィールドの順序を変更し、タブ位置を減らして、この特定のビューのデータ入力に必要のないフィールドを非表示にすることもできます。
複数の行を同時に編集する (一括編集)
バージョン 10.0.38 以降では、ユーザーは、機能管理で有効にできる グリッドでの一括編集 機能を使用して、単一のアクションで複数の選択された行を更新できます。
この機能を使用するには、次の手順に従います。
- グリッドで、更新する行を選択します。
- グリッド オプション>選択した行の編集 を選択します。
- 行の編集 ダイアログ ボックスで、更新したい行を選択して、新しい値を入力します。 グリッドの編集可能なフィールドにサポートされている列のみを選択して更新できます。 行の編集 ダイアログボックスは、列が更新される順序 (上方から下方) を定義します。 この順序は、保存プロセス中にトリガーされたフィールドレベルの検証に影響する場合があります。 更新したい列と値を指定した後、適用 を選択します。
Excel (次のセクションで説明) から貼り付ける場合、グリッドには、データ変更のプレビューとして更新されたコンテンツが斜体で表示されます。 破棄 を選択して一括編集をキャンセルするか、保存 を選択してプロセスを保存します。 保存プロセス中に、システムの前に入力する 保存モデルを使用して 1 列ずつ更新を送信します。 このアプローチにより、すべてのフォームとフィールドの検証が各行に実行されます。 行の始めで、行の状態を確認して各検証のプロセスと結果を監視します。
Excel からの貼り付け
ユーザーはこれまでも、Excel にエクスポートのメカニズムを利用して、財務と運用アプリ内のグリッドから Microsoft Excel にデータをエクスポートすることができました。 しかし、システムの前にデータを入力する機能により、新しいグリッドは Excel からテーブルをコピーして財務と運用アプリのグリッドに直接貼り付けることができるようになりました。 貼り付け操作を開始するグリッド セルによって、コピーした表の貼り付けを開始する位置が決まります。 グリッドの内容は、次の 2 つの場合を除き、コピーされたテーブルの内容で上書きされます。
- コピーしたテーブルの列数が、貼り付け位置を起点としたグリッド内の列数を超えた場合、ユーザーに余分な列が無視されたことが通知されます。
- コピーされたテーブルの行数が、貼り付け位置を起点としたグリッドの行数を超える場合、既存のセルは貼り付けられた内容で上書きされ、コピーされたテーブルの余分な行はグリッドの下部に新たな行として挿入されます。
注記
現在、この機能は特定の状況では使用できません。 たとえば、一般仕訳帳明細行のようなセグメント化された入力コントロールを使用するグリッド内です。
製品内のグリッドからコピーします
財務と運用アプリのグリッドは、Excel の機能に似た対応する範囲選択機能をサポートしています。 この機能により、キーボードを使用してセルの範囲 (複数の行および列) を選択して、必要に応じてコピーして貼り付けることができます。
数式の評価
生産性を高めるため、ユーザーはグリッドの数値セルに公式を入力できます。 システム外部のアプリで計算を行う必要はありません。 例えば、=15*4 と入力して、タブ キーを押してフィールドの外に移動すると、システムによって式が評価され、フィールドの値として 60 が保存されます。
[]
値が式としてシステムで認識されるようにするには、値を等号 (=) で開始します。 サポートされている演算子と構文の詳細については、サポートされている数式記号 を参照してください。
注記
数値コントロールでの数式を評価する機能は、グリッドの外部で利用できます。
表形式データのグループ化
多くの場合、ビジネス ユーザーは、データのアドホック分析を実行する必要があります。 この分析は、Microsoft Excel にデータをエクスポートしてピボット テーブルを使用することで実行できますが、グリッドのグループ化 機能を使用すると、ユーザーは財務と運用アプリ内で表形式のデータを興味深い方法で整理できます。 グループ化機能と 算出値 機能が共に機能し、グループ レベルで算出値 (たとえば小計など) を提供することで、データについて有意義な分析情報を得ることができます。
[]
この機能を使用するには、グループ化する列を右クリックし、この列別にグループ化 を選択します。 このアクションにより、選択した列でデータを並べ替え、グリッドの先頭に新しい列 によるグループ を追加し、各グループの先頭に "ヘッダー行" を挿入します。 これらのヘッダー行では、各グループについて次の情報が提供されます。
- グループのデータ値
- 列名 (この情報は、複数のグループ化レベルがサポートされている場合に特に役立ちます。)
- このグループのデータ行の数
- 任意の構成された列の算出値 (たとえば、列が合計を表示するように構成されている場合の小計など)
保存されているビューを有効にすると、クエリをビューに保存できるページのビューの一部としてグループ化を保存できます。 たとえば、大きなビュー セレクターを持つものがあります。 詳細については、ビューの切り替えセクションを参照してください。
複数のグループレベル
1 つの列を使用してデータをグループ化した後で、目的の列の この列でグループ化する を選択することにより、別の列に基づいてデータをグループ化することができます。 このプロセスは、入れ子になったグループのレベルが 5 つになるまで繰り返すことができ、これは、サポートされる最大の深さです。 この時点で、追加の列を使用してグループ化することはできなくなります。
任意の時点で、列を右クリックして グループ解除 を選択することにより、列のグループ化を解除できます。 グリッドオプション を選択し、すべてのグループ化を解除 することによって、すべての列からグループ化を解除することもできます。
グループ化されたデータの並べ替え
データを 1 つ以上の列でグループ化した後に、対応する列ヘッダーを通じて列のグループ化の並べ替えに対する指示を変更できます。
グループ化されていない列で並べ替えを行う場合、グループ化はそのまま維持されます。 データは、選択した列に基づいて各グループ内で並べ替えされます。
グループの展開と折りたたみ
データの最初のグループ化では、すべてのグループが展開されます。 個々のグループを折りたたむことによってデータの集計ビューを作成したり、グループの展開と折りたたみを使用してデータ間の移動を支援できます。 グループを展開したり、折りたたんだりするには、対応するグループ ヘッダー行でシェブロン (>) ボタンを選択します。 個々のグループの展開/折りたたみ状態は、個人用設定には保存され ない ことに注意してください。
グループ レベルでの行の選択と選択解除
グリッドの最初の列の上部にあるチェック ボックスをオンにすることにより、グリッド内のすべての行を選択 (または選択解除) できるのと同様に、対応するグループ ヘッダー行のチェック ボックスをオンにすることにより、グループ内のすべての行をすばやく選択 (または選択解除) することができます。 グループ ヘッダー行のチェック ボックスは、すべての行が選択されているか、行が選択されていないか、または選択されている行が一部であるかに関係なく、常にそのグループの行の現在の選択状態を反映します。
列名の非表示
データをグループ化する場合、既定の動作では、グループ ヘッダー行に列名が表示されます。 グリッド オプション>グループ列名の非表示 を選択して、グループ ヘッダー行の列名を非表示にすることができます。
日付と時刻の列のグループ化
Date または DateTime フィールドでグループ化する場合、年、月、日でグループ化できるオプションがあります。 対応するヘッダー行のグループ「value」は、そのフィールドの形式と一致します。 また、DateTime フィールドと Time フィールドでは、時間、分、秒でグループ化できます。
重要
ユーザーは現在、日付または時刻列のセグメント上でグループ化した後に、グループ化列を追加できません。
凍結列
グリッド内の一部の列は、表示からスクロールできないコンテキストにとって十分な重要な場合があります。 代わりに、これら列の値が常に表示されます。 グリッドの列を凍結する 機能による柔軟性をユーザーに提供します。
[]
列を凍結するには、列のヘッダーを右クリックし、列を凍結 を選択します。 この手順を初めて実行した場合、選択した列が最初の列になり、ビューからスクロールしなくなりました。 その後凍結した列は最後の凍結列の右側に追加されます。 標準の移動機能を使用すると、必要に従って凍結列を再発注できます。 ただし、凍結された列は、凍結されていない列のセットの間で表示されるので移動できません。 同様に、凍結されていない列は、凍結された列のセットの間で表示されるので移動できません。
列を凍結するには、凍結された列のヘッダーを右クリックし、列を凍結 を選択します。
新しいグリッドの行の選択列と行ステータス列は、常に最初の 2 列として凍結されます。 したがって、これらの列がグリッドに含まれている場合、グリッドの水平スクロール位置に関係なく、常にユーザーに表示されます。 これら 2 つの列の順序を変更できません。
列幅の自動調整
Excel と同様に、現在表示されているコンテンツに基づいて、自動的に列のサイズを変更することができます。 列のサイズ設定ハンドルをダブルタップ (またはダブルクリック) します。 または、列のヘッダーにフォーカスを置き、A キーを選択します (自動調整の場合)。
開発者トピック
[開発者] 新しいグリッドの使用を個々のページからオプトアウトする
新しいグリッドの利用に問題のあるページを発見した場合、API を使用することで、個々のフォームがレガシー グリッド コントロールを使用しつつも、システムの残りの部分が新しいグリッド コントロールを使用できるようになります。 新しいグリッドから個々のページを除外するには、フォームの run()
メソッドに次の呼び出しポスト super()
を追加します。
this.forceLegacyGrid();
この API は、レガシ グリッド コントロールを削除するため、最終的には廃止される予定です。 ただし、廃止が決定してから少なくとも 12 か月間は使用できます。 この API を使用する必要がある問題がある場合は、Microsoft に報告してください。
以前にグリッドをオプトアウトした後、ページに新しいグリッドを使用するように強制する
個々のページで新しいグリッドの使用をオプトアウトした場合は、根本的な問題が解決された後で、後で新しいグリッドを再度有効にすることをお勧めします。 そのためには、forceLegacyGrid()
の呼び出しを削除するだけです。 変更は、次のいずれかが発生するまで有効になりません。
- 環境の再デプロイ : 環境が更新および再デプロイされると、新しいグリッドからオプトアウトしたページを格納するテーブル (FormControlReactGridState) が自動的にクリアされます。
- テーブルの手動クリア : 開発シナリオでは、SQL を使用して FormControlReactGridState テーブルをクリアしてから、AOS を再起動する必要があります。 このアクションの組み合わせにより、新しいグリッドからオプトアウトしたページのキャッシュがリセットされます。
[開発者] システムの前に入力機能から個々のグリッドをオプトアウトする
グリッドの システムの前に入力 機能では対応できない問題も発生しています。 (たとえば、行の検証時にトリガーされるコードによっては、データ ソースの調査がトリガーされ、その調査が既存の行で実行されていない編集を壊す場合があります)。組織でこのようなシナリオが発生した場合、API を使用して、開発者が非同期行の検証から個々のグリッドをオプトアウトし、レガシの動作に戻すことができます。
グリッドで非同期行の検証が無効になっている場合、ユーザーは、現在の行に検証の問題があるときに、新しい行を作成したり、グリッドにある別の既存の行に移動することはできません。 このアクションの副作用として、Excel から財務と運用のグリッドにテーブルを貼り付けることはできません。
非同期行の検証から個々のグリッドをオプトアウトするには、フォームの run()
メソッドの後に呼び出し super()
を追加します。
<gridControl>.allowPreemptiveClient(false);
メモ
- この呼び出しは例外的な場合にのみ実行され、すべてのグリッドに当てはまるわけではありません。
- フォームの読み込み後に、ランタイムでこの API を切り替えることはお勧めしません。
[開発者] サイズから使用可能な幅の列
開発者が、新しいグリッド内の列に対して WidthMode プロパティを SizeToAvailable に設定した場合 、これらの列は最初、プロパティが SizeToContent に設定された場合と同じ幅になります。 ただし、グリッド内で追加の使用可能な幅を使用するために伸縮します。 プロパティが複数の列に対して SizeToAvailable に設定されている場合、グリッド内で追加の使用可能な幅はすべての列で共有されます。 ただし、ユーザーが手動でこれらの列の 1 つをサイズ変更すると、列は静的になります。 それはその幅のままになり、追加の使用可能なグリッド幅を使用するために伸縮することはありません。
[Developer] 下矢印キーを使用して新しい行が作成されたときに初期フォーカスを受け取る列を指定する
システムより前にデータを入力する場合の違い セクションで説明したように、"システムより前に入力する" 機能が有効で、ユーザーが 下矢印 キーを使用して新しい行を作成する場合、既定の動作は、新しい行の最初の列にフォーカスを置くよう設定されています。 このエクスペリエンスは、レガシ グリッド内の場合や 新規 ボタンが選択されている場合のエクスペリエンスとは異なる場合があります。
ユーザーと組織は、データ入力用に最適化された保存済みビューを作成できます。 (たとえば、最初の列がデータ入力を開始する列になるように列の順序を変更することができます。) さらにバージョン 10.0.29 では、組織は selectedControlOnCreate() 算出方法を使用してこの動作を調節できます。 この算出方法を使用すると、開発者は 下矢印 キーを使用して新しい行が作成されたときに初期フォーカスを受け取る列を指定することができます。 入力として、この API は、初期フォーカスを受け取る列に対応するコントロール ID を取得します。
[開発者] React 以外の拡張可能コントロールを使用したグリッドの処理
グリッドの読み込み中に、システムが React ベースではない拡張可能コントロールを検出した場合、システムは代わりにレガシ グリッドを強制的にレンダリングします。 ユーザーがこの状況に初めて遭遇すると、ページを更新する必要があることを示すメッセージが表示されます。 その後、このページでは、次のシステム更新までユーザーにそれ以上通知することなく、レガシ グリッドが自動的に読み込まれます。
この状況を完全に解決するために、拡張可能コントロールの作成者は、グリッドで使用するコントロールの React バージョンを作成できます。 開発後、コントロールの X++ クラスを FormReactControlAttribute 属性で修飾して、そのコントロールに読み込む React バンドルの場所を指定できます。 SegmentedEntryControl
クラスを例として参照してください。