React Hierarchical Grid サイズ
Ignite UI for React の React Hierarchical Grid サイズ機能を使用すると、ユーザーは IgrHierarchicalGrid
内のデータの間隔とレイアウトを制御できます。--ig-size
を変更することで、大量のコンテンツを操作するときのユーザー エクスペリエンスを大幅に向上させることができます。次の 3 つのサイズ オプションから選択できます。
--ig-size-large
--ig-size-medium
--ig-size-small
React Hierarchical Grid サイズの例
使用方法
上記デモで示されるように、IgrHierarchicalGrid
は 3 つのサイズ オプション (small、medium、large) を提供します。以下のコード スニペットは、--ig-size
をインラインまたは CSS クラスの一部として設定する方法を示しています。
.gridSize {
--ig-size: var(--ig-size-medium);
}
<IgrHierarchicalGrid id="grid" className="gridSize">
</IgrHierarchicalGrid>
各オプションを IgrHierarchicalGrid
に反映する方法を紹介します。サイズ オプション間で切り替える際に各 IgrHierarchicalGrid
要素の高さとそのパディングが変更されます。カスタムの列 width
を適用する場合、左右のパディングより大きくする必要があることに注意してください。
- large - これはデフォルトの
IgrHierarchicalGrid
サイズです。サイズが最も低く、行の高さが50px
です。左と右のパディングが24px
で最小列width
は80px
です。 - medium - 中サイズで、行の高さは
40px
です。左と右のパディングが16px
で最小列width
は64px
です。 - small - 強度が最も高く、行の高さは
32px
です。左と右のパディングが12px
で最小列width
は56px
です。
[!Note] 現在サイズはオーバーライドできません。
引き続きサンプルを使用して、--ig-size
の適用方法について説明します。最初に各サイズを切り替えるボタンを追加します。
<IgrPropertyEditorPanel
ref={propertyEditorRef}
componentRenderer={renderer}
target={grid}
descriptionType="WebHierarchicalGrid"
isHorizontal="true"
isWrappingEnabled="true">
<IgrPropertyEditorPropertyDescription
name="SizeEditor"
label="Grid Size:"
valueType="EnumValue"
dropDownNames={["Small", "Medium", "Large"]}
dropDownValues={["Small", "Medium", "Large"]}
changed={this.webGridSetGridSize}>
</IgrPropertyEditorPropertyDescription>
</IgrPropertyEditorPanel>
マークアップを追加します。
<IgrHierarchicalGrid
autoGenerate="false"
ref={this.grid}
id="grid"
allowFiltering="true">
<IgrColumn field="CustomerID" dataType="String"></IgrColumn>
<IgrColumn field="CompanyName" dataType="String"></IgrColumn>
<IgrColumn field="ContactName" dataType="String"></IgrColumn>
<IgrColumn field="Address" dataType="String"></IgrColumn>
<IgrColumn field="City" dataType="String"></IgrColumn>
<IgrColumn field="PostalCode" dataType="String"></IgrColumn>
<IgrColumn field="Country" dataType="String"></IgrColumn>
<IgrColumn field="Phone" dataType="String"></IgrColumn>
<IgrColumn field="Fax" dataType="String"></IgrColumn>
<IgrRowIsland childDataKey="Orders" autoGenerate="false">
<IgrColumn field="OrderID" dataType="Number"></IgrColumn>
<IgrColumn field="EmployeeID" dataType="Number"></IgrColumn>
<IgrColumn field="OrderDate" dataType="Date"></IgrColumn>
<IgrColumn field="RequiredDate" dataType="Date"></IgrColumn>
<IgrColumn field="ShippedDate" dataType="Date"></IgrColumn>
<IgrColumn field="ShipVia" dataType="Number"></IgrColumn>
<IgrColumn field="Freight" dataType="Number"></IgrColumn>
<IgrColumn field="ShipName" dataType="String"></IgrColumn>
<IgrColumn field="ShipAddress" dataType="String"></IgrColumn>
<IgrColumn field="ShipCity" dataType="String"></IgrColumn>
<IgrColumn field="ShipPostalCode" dataType="String"></IgrColumn>
<IgrColumn field="ShipCountry" dataType="String"></IgrColumn>
<IgrRowIsland childDataKey="OrderDetails" autoGenerate="false">
<IgrColumn field="ProductID" dataType="Number"></IgrColumn>
<IgrColumn field="UnitPrice" dataType="Number"></IgrColumn>
<IgrColumn field="Quantity" dataType="Number"></IgrColumn>
<IgrColumn field="Discount" dataType="Number"></IgrColumn>
</IgrRowIsland>
</IgrRowIsland>
</IgrHierarchicalGrid>
最後にサイズを適用するためのロジックを実装します。
private propertyEditor: IgrPropertyEditorPanel
private propertyEditorRef(r: IgrPropertyEditorPanel) {
this.propertyEditor = r;
this.setState({});
}
private sizeEditor: IgrPropertyEditorPropertyDescription
private grid: IgrHierarchicalGrid
private gridRef(r: IgrHierarchicalGrid) {
this.grid = r;
this.setState({});
}
constructor(props: any) {
super(props);
this.propertyEditorRef = this.propertyEditorRef.bind(this);
this.webGridSetGridSize = this.webGridSetGridSize.bind(this);
this.gridRef = this.gridRef.bind(this);
}
private _componentRenderer: ComponentRenderer = null;
public get renderer(): ComponentRenderer {
if (this._componentRenderer == null) {
this._componentRenderer = new ComponentRenderer();
var context = this._componentRenderer.context;
PropertyEditorPanelDescriptionModule.register(context);
WebHierarchicalGridDescriptionModule.register(context);
}
return this._componentRenderer;
}
public webGridSetGridSize(sender: any, args: IgrPropertyEditorPropertyDescriptionChangedEventArgs): void {
var newVal = (args.newValue as string).toLowerCase();
var grid = document.getElementById("grid");
grid.style.setProperty('--ig-size', `var(--ig-size-${newVal})`);
}
IgrHierarchicalGrid
の行の高さを変更するその他のオプションに rowHeight
プロパティがあります。このプロパティと --ig-size
プションが IgrHierarchicalGrid
レイアウトにどのように動作に影響するかを以下で確認できます。
以下を確認してください。
rowHeight
を指定した場合、--ig-size
CSS 変数は行の高さに影響しません。--ig-size
は、上記の理由により残りすべての Hierarchical Grid 要素に影響します。
サンプル機能を拡張して rowHeight
プロパティを IgrHierarchicalGrid
に追加します。
<IgrHierarchicalGrid id="grid" className="gridSize" rowHeight="80px" width="100%" height="550px" allowFiltering="true">
</IgrHierarchicalGrid>
API リファレンス
コミュニティに参加して新しいアイデアをご提案ください。