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 つのサイズ オプション (smallmediumlarge) を提供します。以下のコード スニペットは、--ig-size をインラインまたは CSS クラスの一部として設定する方法を示しています。

    .gridSize {
        --ig-size: var(--ig-size-medium);
    }
    
    <IgrHierarchicalGrid id="grid" className="gridSize">
    </IgrHierarchicalGrid>
    

    各オプションを IgrHierarchicalGrid に反映する方法を紹介します。サイズ オプション間で切り替える際に各 IgrHierarchicalGrid 要素の高さとそのパディングが変更されます。カスタムの列 width を適用する場合、左右のパディングより大きくする必要があることに注意してください。

    • large - これはデフォルトの IgrHierarchicalGrid サイズです。サイズが最も低く、行の高さが 50px です。左と右のパディングが 24px で最小列 width80px です。
    • medium - 中サイズで、行の高さは 40px です。左と右のパディングが 16px で最小列 width64px です。
    • small - 強度が最も高く、行の高さは 32px です。左と右のパディングが 12px で最小列 width56px です。

    [!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 リファレンス

    コミュニティに参加して新しいアイデアをご提案ください。