syncfusion-aspnetcore-kanban について
Syncfusion ASP.NET Core で Kanban ボードを構築・設定するための開発者向けスキルです。データバインドやカード、スイムレーンに加え、仮想スクロール、アクセシビリティ、イベント処理を扱います。
主な機能
- 01列、カード、スイムレーンの設定
- 02ローカル・リモートデータのバインドと CRUD
- 03ドラッグ&ドロップ、並べ替え、列制約の設定
- 04編集ダイアログとツールチップのカスタマイズ
- 05仮想スクロールとアクセシビリティの設定
活用シーン
- 01チームタスク向けの複数列ボードの構築
- 02WebAPI データの読み込みとカード変更の保存
- 03スイムレーンでカードを分類し、列間ドラッグを有効化
- 04大量のカードへの対応とキーボード操作の設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ syncfusion/ aspnetcore-ui-components-skills --skill syncfusion-aspnetcore-kanbanインストール後、Claude Code で/syncfusion-aspnetcore-kanbanを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/cards.mdcolumns.mddata-binding.mddialog.mddrag-and-drop.mdevents.mdgetting-started.mdhow-to.mdmethods.mdpersistence-localization-responsive.mdproperties.mdsorting-priority-validation.mdswimlane.mdtooltip-style-dimensions.mdvirtual-scrolling-accessibility.md詳細
Syncfusion ASP.NET Core Kanban の実装
目次
クイックスタート
// HomeController.cs
public IActionResult Index()
{
ViewBag.data = new KanbanDataModels().KanbanTasks();
return View();
}
<ejs-kanban id="Kanban" keyField="Status" dataSource="@ViewBag.data">
<e-kanban-columns>
<e-kanban-column headerText="To Do" keyField="Open"></e-kanban-column>
<e-kanban-column headerText="In Progress" keyField="InProgress"></e-kanban-column>
<e-kanban-column headerText="Testing" keyField="Testing"></e-kanban-column>
<e-kanban-column headerText="Done" keyField="Close"></e-kanban-column>
</e-kanban-columns>
<e-kanban-cardsettings headerField="Title" contentField="Summary"></e-kanban-cardsettings>
</ejs-kanban>
前提条件:
- NuGet:
Install-Package Syncfusion.EJ2.AspNet.Core _ViewImports.cshtml:@addTagHelper *, Syncfusion.EJ2_Layout.cshtml:Fluent CSS とej2.min.jsの CDN リンク、および<ejs-scripts></ejs-scripts>
→ セットアップの詳細については、references/getting-started.md を参照してください。
このスキルを使用する場面
次のような場合にこのスキルを使用します。
- Kanban ボードを構築する — 複数列のワークフローを可視化します
- 列を設定する — 単一キー/複数キーの列、積み重ねヘッダー、切り替え、ドラッグを設定します
- スイムレーンを追加する — 固定行を使用して、チーム、ユーザー、カテゴリごとにカードをグループ化します
- ドラッグ&ドロップを有効にする — 列間、スイムレーン間、または外部コンポーネントとの間でカードを移動します
- カードダイアログを実装する — カスタムフィールド、テンプレート、CRUD の永続化に対応した編集ダイアログを実装します
- リモートデータをバインドする — CRUD 操作を含む OData、WebAPI、UrlAdaptor を使用します
- 並べ替えを適用する — インデックス、データソースの順序、またはカスタムフィールドで並べ替えます
- カードの優先度を設定する — 数値ランクフィールドを使用して、正確な位置にドロップしたときの順序を設定します
- 列の制約を追加する — 列ごとにカード数の最小値/最大値を検証します
- ツールチップを表示する — デフォルトまたはテンプレートベースのホバーツールチップを表示します
- 仮想スクロールを有効にする — 大規模なデータセット(カード 10 万件以上)を効率的に処理します
- アクセシビリティを設定する — WCAG 2.2 AA、キーボードナビゲーション、スクリーンリーダーのサポートを設定します
- ローカライズまたは RTL を設定する — 多言語サポートと右から左へのレイアウトに対応します
- カードをフィルタリングまたは検索する —
queryプロパティを使用します - 列を動的に変更する — 実行時に列の設定を更新します
- イベントを処理する — カードのクリック、ドラッグ、ダイアログの開閉、データバインドなどに応じて処理します
- メソッドをプログラムから呼び出す — カードの追加/更新/削除、ダイアログの表示、列の表示/非表示、ボードの更新を行います
- すべてのプロパティを参照する — コンポーネントとサブモデルのプロパティ、型、デフォルト値をすべて確認します
ドキュメントとナビゲーションガイド
セットアップと最初のボード
📄 参照: references/getting-started.md
- NuGet のインストールとパッケージのセットアップ
_ViewImports.cshtmlでの Tag Helper の登録_Layout.cshtmlでの CDN 設定(CSS + JS)- 4 列の最小構成の Kanban ボード
- スイムレーンの基本的なクイックスタート
- ライセンスキーの登録
データバインディング
📄 参照: references/data-binding.md
@ViewBag.dataを使用したローカルデータバインディング- リモートデータ:OData、ODataV4、WebAPI、UrlAdaptor
<e-data-manager>の設定insertUrl、updateUrl、removeUrl、crudUrlを使用した CRUD 操作- カスタムアダプターパターン
actionFailureイベントの処理- Ajax 読み込みインジケーターの動作
カード
📄 参照: references/cards.md
headerField(必須の一意なカード ID)showHeader— カードヘッダーの表示/非表示contentField— カード本文のテキストフィールド- jsrender 構文を使用したカードテンプレート
selectionType— None、Single、MultiplecolorFieldを使用したカードの色のカスタマイズ
列
📄 参照: references/columns.md
- 単一キーおよび複数キーの
keyFieldマッピング headerText— 列の表示名- 列ヘッダーのテンプレート
allowToggle— 折りたたみ可能な列isExpanded— 初期の展開/折りたたみ状態- スタックヘッダー(
<e-kanban-stackedheaders>) - 列単位のドラッグ(
allowColumnDragAndDrop) showItemCount— ヘッダーにカード数を表示
スイムレーン
📄 参照: references/swimlane.md
keyField— グループ化に使うデータフィールドtextField— 表示ラベルのフィールド- スイムレーンヘッダーのテンプレート
sortBy— スイムレーンの行を並べ替えallowDragAndDrop— スイムレーン間のカードドラッグを有効化showEmptyRow— 空のスイムレーン行を表示showItemCount— スイムレーンごとのカード数enableFrozenRows— スクロール時にスイムレーンヘッダーを固定
ドラッグ&ドロップ
📄 参照: references/drag-and-drop.md
- 列内のドラッグ(デフォルトで有効)
allowDragAndDrop="false"— すべてのドラッグを無効化- 列ごとの
allowDrag/allowDropフラグ transitionColumns— 許可する列間の移動を制限swimlaneSettings.allowDragAndDropによるスイムレーン間のドラッグ- 外部からのドラッグ:
externalDropIdプロパティ - Kanban 間のドラッグ(
dragStopイベントとdeleteCard/addCard) - Kanban と Treeview、Schedule の連携
カード編集ダイアログ
📄 参照: references/dialog.md
- デフォルトのダイアログ(カードをダブルクリック)
<e-kanban-dialogsettings fields="...">によるカスタムダイアログフィールド- フィールド型:String、Numeric、TextArea、DropDown、TextBox、Input
- EJ2 コンポーネントの初期化を伴うカスタムダイアログテンプレート
dialogOpenイベントとargs.cancel = trueによるダイアログ表示の防止- プログラムによる追加:
kanbanObj.openDialog('Add', data) - サーバー側の
EditParamsクラスを使用した UrlAdaptor による CRUD の永続化
並べ替え、優先度、検証
📄 参照: references/sorting-priority-validation.md
sortBy、field、directionを指定する<e-kanban-sortsettings>sortByの値:Index、DataSourceOrder、Custom- 優先度フィールド:指定位置へのドロップには
<e-kanban-cardsettings priority="RankId">を使用 - 列のカード数の最小値/最大値:
<e-kanban-column>のminCount、maxCount - 制約の種類:Column(デフォルト)または Swimlane
- 制約違反時の視覚的な色表示
ツールチップ、スタイル、寸法
📄 参照: references/tooltip-style-dimensions.md
enableTooltip="true"— カードにホバーしたときのツールチップtooltipTemplate— カスタム HTML ツールチップテンプレート- すべての Kanban 要素の CSS クラス一覧
- ヘッダー固定のパターン
widthとheight— auto、ピクセル、パーセント値
永続化、ローカライズ、レスポンシブ対応
📄 参照: references/persistence-localization-responsive.md
enablePersistence="true"— localStorage への状態保存localeプロパティとej.base.L10n.load()スクリプト- Kanban の文字列に使用するすべてのロケールキー名
enableRtl="true"— 右から左へのレイアウト- モバイルでのレスポンシブ動作(スワイプ、タップ&ホールド、スイムレーンメニュー)
仮想スクロールとアクセシビリティ
📄 参照: references/virtual-scrolling-accessibility.md
enableVirtualization="true"— 必要に応じたカードの描画cardHeight— 仮想化には固定の高さが必要- サーバー側での
KanbanVirtualizationパラメーター処理 - WCAG 2.2 AA 準拠表
- WAI-ARIA 属性(
aria-label、aria-expanded、aria-selectedなど) - キーボードショートカット一覧
AllowKeyboard="false"— キーボード操作を無効化
イベント
📄 参照: references/events.md
ActionBegin/ActionComplete/ActionFailure— ライフサイクルとエラー処理CardClick/CardDoubleClick/CardRendered— カード操作フックColumnDrag/ColumnDragStart/ColumnDrop— 列の並べ替えイベントCreated/DataBinding/DataBound/DataSourceChanged— 初期化およびデータイベントDialogOpen/DialogClose— ダイアログをインターセプトまたはキャンセルします(args.cancel = trueを使用)Drag/DragStart/DragStop— カードのドラッグのライフサイクル(Kanban 間のシナリオではDragStopを使用)QueryCellInfo— 描画前に列のセル要素をカスタマイズします
メソッド
📄 参照: references/methods.md
AddCard/UpdateCard/DeleteCard— カードの CRUD 操作AddColumn/DeleteColumn— 列の動的な管理OpenDialog/CloseDialog— ダイアログのプログラムによる制御ShowColumn/HideColumn— 列の表示を切り替えますGetCardDetails/GetColumnData/GetSelectedCards/GetSwimlaneData— データの取得ShowSpinner/HideSpinner— 読み込みインジケーターの制御Refresh/RefreshHeader/RefreshUI— ボードの再描画ヘルパーDataBind/Destroy/AppendTo/Inject— コンポーネントのライフサイクルユーティリティ
すべてのプロパティのリファレンス
📄 参照: references/properties.md
<ejs-kanban>のルートプロパティすべての一覧(型、デフォルト値、例を含む)- サブモデルのプロパティ:
CardSettings、Columns、SwimlaneSettings、SortSettings、DialogSettings、StackedHeaders - Enum 値:
ConstraintType、SelectionType、SortOrderBy、SortDirection
手順別レシピ
📄 参照: references/how-to.md
- 実行時に列を動的に変更する
- ドロップダウンを使って
queryプロパティでカードをフィルタリングする - テキスト入力でフィールド値からカードを検索する
- ヘッダーのダブルクリックイベントハンドラーを追加する
よく使われるパターン
リモートデータを使用するスイムレーンボード
使用する場面: カードをユーザー/チーム別にグループ化し、ローカルコレクションではなく API エンドポイント(OData、WebAPI など)からデータを読み込む必要がある場合。
<ejs-kanban id="Kanban" keyField="Status">
<e-data-manager url="/api/tasks" adaptor="ODataV4Adaptor"></e-data-manager>
<e-kanban-columns>
<e-kanban-column headerText="To Do" keyField="Open"></e-kanban-column>
<e-kanban-column headerText="In Progress" keyField="InProgress"></e-kanban-column>
<e-kanban-column headerText="Done" keyField="Close"></e-kanban-column>
</e-kanban-columns>
<e-kanban-cardsettings headerField="Title" contentField="Summary"></e-kanban-cardsettings>
<e-kanban-swimlanesettings keyField="Assignee" textField="Assignee"></e-kanban-swimlanesettings>
</ejs-kanban>
列の制約を設定したボード
使用する場面: WIP(Work-In-Progress)制限を適用し、列に積み重ねられるカードが少なすぎたり多すぎたりするのを防ぐ必要がある場合。
<ejs-kanban id="Kanban" keyField="Status" dataSource="@ViewBag.data">
<e-kanban-columns>
<e-kanban-column headerText="To Do" keyField="Open"></e-kanban-column>
<e-kanban-column headerText="In Progress" keyField="InProgress"
minCount="3" maxCount="5" showItemCount="true"></e-kanban-column>
<e-kanban-column headerText="Done" keyField="Close"></e-kanban-column>
</e-kanban-columns>
<e-kanban-cardsettings headerField="Title" contentField="Summary"></e-kanban-cardsettings>
</ejs-kanban>
カード編集ダイアログと CRUD を備えたボード
使用する場面: ユーザーがダイアログフォームでカードを作成、編集、削除し、変更を
UrlAdaptor経由でサーバーに保存する必要がある場合。
<ejs-kanban id="Kanban" keyField="Status">
<e-data-manager url="/Home/UpdateData" adaptor="UrlAdaptor"
crudUrl="/Home/UpdateData"></e-data-manager>
<e-kanban-columns>
<e-kanban-column headerText="To Do" keyField="Open"></e-kanban-column>
<e-kanban-column headerText="Done" keyField="Close"></e-kanban-column>
</e-kanban-columns>
<e-kanban-cardsettings headerField="Title" contentField="Summary"></e-kanban-cardsettings>
<e-kanban-dialogsettings fields="@ViewBag.dialogFields"></e-kanban-dialogsettings>
</ejs-kanban>
仮想スクロールボード
使用する場面: データセットが大きく(数百から数千枚のカード)、すべてのカードを一度に描画するとパフォーマンスの問題が発生する場合。
<ejs-kanban id="Kanban" keyField="Status" dataSource="@ViewBag.data"
enableVirtualization="true">
<e-kanban-columns>
<e-kanban-column headerText="To Do" keyField="Open"></e-kanban-column>
<e-kanban-column headerText="In Progress" keyField="InProgress"></e-kanban-column>
<e-kanban-column headerText="Done" keyField="Close"></e-kanban-column>
</e-kanban-columns>
<e-kanban-cardsettings headerField="Title" contentField="Summary"
selectionType="Multiple"></e-kanban-cardsettings>
</ejs-kanban>
主要プロパティのリファレンス
| プロパティ | タグ | 値 | 目的 |
|---|---|---|---|
keyField | <ejs-kanban> | フィールド名の文字列 | ステータス値によってカードを列に割り当てます |
dataSource | <ejs-kanban> | @ViewBag.data | ローカルデータコレクション |
enableVirtualization | <ejs-kanban> | true/false | 大量のデータ向けの仮想スクロール |
enableTooltip | <ejs-kanban> | true/false | カードにカーソルを合わせたときのツールチップ |
tooltipTemplate | <ejs-kanban> | テンプレート ID の文字列 | カスタムツールチップの HTML テンプレート |
allowDragAndDrop | <ejs-kanban> | true/false | ドラッグ&ドロップの全体設定 |
externalDropId | <ejs-kanban> | 要素 ID の配列 | 外部からのドロップ先 ID |
enablePersistence | <ejs-kanban> | true/false | 状態を localStorage に保存します |
locale | <ejs-kanban> | ロケール文字列(例:"de") | UI 文字列のローカライズ |
enableRtl | <ejs-kanban> | true/false | 右から左へのレイアウト |
width | <ejs-kanban> | auto/px/% | ボードの幅 |
height | <ejs-kanban> | auto/px/% | ボードの高さ |
AllowKeyboard | <ejs-kanban> | true/false | キーボード操作の切り替え |
headerField | <e-kanban-cardsettings> | フィールド名の文字列 | カードの一意の ID フィールド(必須) |
contentField | <e-kanban-cardsettings> | フィールド名の文字列 | カード本文のテキストフィールド |
template | <e-kanban-cardsettings> | テンプレート ID の文字列 | カスタムカードの HTML テンプレート |
selectionType | <e-kanban-cardsettings> | None/Single/Multiple | カードの選択モード |
priority | <e-kanban-cardsettings> | フィールド名の文字列 | 並べ替えに使う数値の順位フィールド |
showHeader | <e-kanban-cardsettings> | true/false | カードヘッダーの表示/非表示 |
keyField | <e-kanban-column> | ステータス値(単数または複数) | 列のカードフィルター(単一値またはカンマ区切り) |
headerText | <e-kanban-column> | 表示文字列 | 列のタイトル |
allowToggle | <e-kanban-column> | true/false | 列の折りたたみを許可します |
isExpanded | <e-kanban-column> | true/false | 初期状態で展開するかどうか |
minCount | <e-kanban-column> | 整数 | カードの最小数の制約 |
maxCount | <e-kanban-column> | 整数 | カードの最大数の制約 |
showItemCount | <e-kanban-column> | true/false | カード数のバッジを表示します |
allowDrag | <e-kanban-column> | true/false | 列からのカードのドラッグを許可します |
allowDrop | <e-kanban-column> | true/false | 列へのカードのドロップを許可します |
keyField | <e-kanban-swimlanesettings> | フィールド名の文字列 | スイムレーンのグループ化フィールド |
textField | <e-kanban-swimlanesettings> | フィールド名の文字列 | スイムレーンの表示ラベルフィールド |
sortBy | <e-kanban-sortsettings> | Index/DataSourceOrder/Custom | カードの並べ替え方法 |
field | <e-kanban-sortsettings> | フィールド名の文字列 | 並べ替え対象のフィールド |
direction | <e-kanban-sortsettings> | Ascending/Descending | 並べ替えの方向 |
データモデル
すべての例で使用する標準の KanbanDataModels クラス:
public class KanbanDataModels
{
public string Id { get; set; }
public string Title { get; set; }
public string Status { get; set; } // Maps to keyField
public string Summary { get; set; } // Card body content
public string Type { get; set; }
public string Priority { get; set; }
public string Tags { get; set; }
public double Estimate { get; set; }
public string Assignee { get; set; } // Used for swimlane grouping
public int RankId { get; set; } // Numeric rank for priority ordering
public string Color { get; set; } // Optional card color field
}