Blazor Grid 列のサイズ変更の概要
Blazor Grid の Ignite UI for Blazor 列のサイズ変更機能を使用すると、ユーザーは IgbGrid
の列の幅を簡単に調整できます。デフォルトでは、ドラッグによるサイズ変更操作が有効になっている間、一時的なサイズ変更インジケーターが表示されます。利用可能なサイズ変更オプションがいくつかあります - ピクセル/パーセンテージでの列のサイズ変更、列のサイズ変更の制限、ダブルクリック時の列の自動サイズ変更、および初期化時の列の自動サイズ変更。
Blazor Grid 列のサイズ変更の例
列のサイズ変更は列レベルで有効化にできます。つまり、IgbGrid
にサイズ変更可能な列およびサイズ変更不可の列の両方を含むことが可能です。IgbColumn
の Resizable
入力によって制御されます。
<IgbColumn Field="ID" Resizable=true Width="100px"></IgbColumn>
IgbGrid
の ColumnResized
イベントを処理し、列がサイズ変更されたときにカスタム ロジックを実装できます。以前の列幅、新しい列幅、および IgbColumn
オブジェクトがイベント引数で公開されます。
<IgbGrid Data=data AutoGenerate=false ColumnResized="onResize">
<IgbColumn Field="ID" Resizable=true Width="100px"></IgbColumn>
<IgbColumn Field="CompanyName" Resizable=true Width="100px"></IgbColumn>
</IgbGrid>
@code {
private void onResize(IgbColumnResizeEventArgs args)
{
IgbColumnType col = args.Detail.Column;
string pWidth = args.Detail.PrevWidth;
string nWidth = args.Detail.NewWidth;
}
}
ピクセル/パーセンテージで列のサイズを変更する
ユーザーのシナリオに応じて、列の幅はピクセル、パーセンテージ、または両方の組み合わせで定義できます。これらのシナリオはすべて、列のサイズ変更機能でサポートされています。デフォルトでは、列に幅が設定されていない場合、ピクセルで設定された幅の使用可能なスペースに収まります。
つまり、次の構成が可能です。
<IgbGrid Data=data AutoGenerate=false ColumnResized="onResize">
<IgbColumn Field="ID" Resizable=true Width="10%"></IgbColumn>
<IgbColumn Field="CompanyName" Resizable=true Width="100px"></IgbColumn>
<IgbColumn Field="ContactTitle" Resizable=true></IgbColumn>
</IgbGrid>
[!Note] ピクセルとパーセンテージで設定された場合で列のサイズ変更の動作は少々異なります。
ピクセル
幅がピクセルで設定された列のサイズ変更は、マウスの水平移動量を列のサイズに直接足したり引いたりして行なわれます。
パーセンテージ
幅がパーセンテージで設定された列のサイズを変更する場合、ピクセル単位のマウスの水平移動量は、ほぼグリッド幅に対するパーセンテージの量に変換されます。列はレスポンシブな状態のまま、その後のグリッドのサイズ変更は列にも反映されます。
列のサイズ変更の制限
列の最小幅および最大幅の構成も可能です。IgbColumn
の MinWidth
および MaxWidth
入力によって制御されます。この場合、サイズ変更インジケーターのドラッグ操作が制限されます。列が MinWidth
および MaxWidth
によって定義される範囲以外にサイズ変更できないことをユーザーに通知します。
<IgbColumn Field="ContactTitle" Resizable=true Width="100px" MinWidth="60px" MaxWidth="230px"></IgbColumn>
列幅の最小値と最大値のタイプ (ピクセルまたはパーセンテージ) を混在させることができます。最小値と最大値がパーセンテージに設定されている場合、それぞれの列サイズはピクセルと同様の正確なサイズに制限されます。
つまり、次の構成が可能です。
<IgbColumn Field="ContactTitle" Resizable=true Width="10%" MinWidth="60px" MaxWidth="230px"></IgbColumn>
または
<IgbColumn Field="ID" Resizable=true Width="100px" MinWidth="5%" MaxWidth="15%"></IgbColumn>
ダブルクリックで列の自動サイズ調整
各列ヘッダーの右側をダブルクリックして列を自動サイズ調整することができます。列は、現在表示されているヘッダーを含む一番長いセル値にサイズ設定されます。この動作はデフォルトで有効なため、追加で構成する必要はありません。ただし、MaxWidth
がその列に設定され、新しい幅が MaxWidth
値より大きい場合、列は自動サイズ調整されません。この場合、列が MaxWidth
値に設定されます。
また、IgbColumn
の Autosize
メソッドで列を動的に自動でサイズ変更できます。
@code {
private IgbGrid gridRef;
private void AutosizeColumn()
{
IgbColumn column = gridRef.Columns.Where((col) => { return col.Field == "ID"; }).FirstOrDefault();
column.Autosize(false);
}
}
初期化時に列を自動サイズ調整
Width
を 'auto' に設定することで、初期化時に各列を自動サイズに設定できます。
<IgbColumn Width="auto"></IgbColumn>
列がビューで最初に初期化されるとき、その幅は、表示されている最も長いセルまたはヘッダーのサイズに調整されます。表示されている行の外側にあるセルは含まれないことに注意してください。
このアプローチは、初期化後の自動サイズ変更よりもパフォーマンスが最適化されており、特に多数の列のサイズを自動サイズ設定する必要がある場合に推奨されます。
スタイル設定
定義済みのテーマに加えて、利用可能な CSS プロパティのいくつかを設定することで、グリッドをさらにカスタマイズできます。 サイズ変更ハンドルの色を変更したい場合は、最初にグリッドのクラスを設定する必要があります。
<IgbGrid class="grid"></IgbGrid>
次に、そのクラスに関連する CSS プロパティを設定します:
.grid {
--ig-grid-resize-line-color: #f35b04;
}
デモ
API リファレンス
その他のリソース
コミュニティに参加して新しいアイデアをご提案ください。