ASP.NET Core MVC アプリケーションに、Web Components のグリッドコンポーネントであるIgcGridComponent を組み込む手順をご紹介します。

前提条件
この手順ではライセンス版の Ignite UI for Web Components を使用します。あらかじめ以下の手順を完了し、Infragistics のプライベートフィードへのアクセスを有効にしてください。
https://kb.jp.infragistics.com/?p=10609

手順

1. npm の初期化

コマンドプロンプトまたは PowerShell で、.csproj ファイルのあるフォルダに移動し、以下のコマンドを実行します。

npm init -y

実行後、フォルダ内にpackage.json ファイルが生成されます。

2. Ignite UI Web Components パッケージのインストール

以下のコマンドを実行して、グリッドに必要なパッケージをインストールします。

npm install @infragistics/igniteui-webcomponents-grids

3. Vite のセットアップ

npm パッケージは Web アプリケーションから直接参照できないため、バンドルツールを使用してバンドル化する必要があります。ここでは Vite を使用します。

Vite のインストール

npm install -D vite

vite.config.js の作成

.csproj ファイルと同じフォルダに、以下の内容で vite.config.js を作成します。

import { defineConfig } from "vite";
import path from "path";

export default defineConfig({
  build: {
    outDir: path.resolve(__dirname, "wwwroot/dist"),
    emptyOutDir: true,
    rollupOptions: {
      input: path.resolve(__dirname, "main.js"),
      output: {
        entryFileNames: "app.js",
        format: "es",
        assetFileNames: "assets/[name].[ext]"
      }
    }
  }
});

main.js を入力ファイルとして受け取り、バンドル処理を行った結果を app.js として wwwroot/dist フォルダに出力します。アセット(CSS・画像など)は wwwroot/dist/assets/ に格納されます。

main.js の作成

同じフォルダに以下の内容で main.js を作成します。IgcGridComponent に必要なモジュールをインポートする内容です。

import "@infragistics/igniteui-webcomponents-grids/grids/themes/light/bootstrap.css";
import "@infragistics/igniteui-webcomponents-grids/grids/combined.js";

ビルドの実行

以下のコマンドを実行してビルドを行います。

npx vite build

ビルドが完了すると、wwwroot/dist/ フォルダが生成され、その直下に以下のファイルが出力されます。

  • app.js — バンドル済み JavaScript
  • assets/main.css — バンドル済みスタイルシート

4. データモデルの作成

IgcGridComponent に表示するデータのモデルクラスを作成します。

public class GridModel
{
    public IQueryable<RowData>? GridData { get; set; }
}

public class RowData
{
    public string? Id { get; set; }
    public int Value1 { get; set; }
    public int Value2 { get; set; }
    public int Value3 { get; set; }
}

5. コントローラーの実装

Controllers/HomeController.cs で、グリッド表示用のサンプルデータを生成してビューに渡します。

public class HomeController : Controller
{
    public IActionResult Index()
    {
        var random = new Random();
        var gridData = new List<RowData>();

        for (var i = 0; i < 15; i++)
        {
            gridData.Add(new()
            {
                Id = "item" + i,
                Value1 = random.Next(0, 1000),
                Value2 = random.Next(0, 1000),
                Value3 = random.Next(0, 1000),
            });
        }

        var model = new GridModel
        {
            GridData = gridData.AsQueryable(),
        };

        return View(model);
    }
}

6. ビューの実装

Views/Home/Index.cshtml に以下を記述します。

@using System.Text.Json
@using NetCoreMVC_IgcGrid.Models
@model GridModel

<igc-grid id="grid1" width="600px" height="400px">
    <igc-column field="Id"></igc-column>
    <igc-column field="Value1"></igc-column>
    <igc-column field="Value2"></igc-column>
    <igc-column field="Value3"></igc-column>
</igc-grid>

<script type="module" src="~/dist/app.js"></script>

<script>
    const gridData = JSON.parse('@Html.Raw(JsonSerializer.Serialize(Model.GridData))');
    const grid = document.querySelector("#grid1");
    grid.data = gridData;
</script>

7. スタイルシートの適用

Views/Shared/_Layout.cshtml の head 内に以下を追加し、IgcGridComponent にスタイルが適用されるようにします。

<head>
.....
      <link rel="stylesheet" href="~/dist/assets/main.css" />
</head>
Tagged:

製品について

Ignite UI for Web Components