mcpField
S
syncfusion-aspnetcore-kanban

syncfusion-aspnetcore-kanban

github.com/syncfusionDevelopment0111 installsUpdated 4w ago
Repository

About syncfusion-aspnetcore-kanban

A guide skill for Syncfusion ASP.NET Core developers building and configuring Kanban boards. It covers data binding, cards and swimlanes, along with virtualization, accessibility, and event handling.

Key features

  1. 01Configure columns, cards, and swimlanes
  2. 02Bind local or remote data and perform CRUD
  3. 03Set drag-and-drop, sorting, and column limits
  4. 04Customize edit dialogs and tooltips
  5. 05Configure virtualization and accessibility

Use cases

  1. 01Build a multi-column board for team tasks
  2. 02Load WebAPI data and persist card changes
  3. 03Group cards by swimlane and enable cross-column dragging
  4. 04Handle large card sets and configure keyboard navigation

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/syncfusion/aspnetcore-ui-components-skills --skill syncfusion-aspnetcore-kanban

After installing, type/syncfusion-aspnetcore-kanbanin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
cards.md
columns.md
data-binding.md
dialog.md
drag-and-drop.md
events.md
getting-started.md
how-to.md
methods.md
persistence-localization-responsive.md
properties.md
sorting-priority-validation.md
swimlane.md
tooltip-style-dimensions.md
virtual-scrolling-accessibility.md

Details

From the project README

Implementing Syncfusion ASP.NET Core Kanban

Table of Contents

Quick Start

// HomeController.cs
public IActionResult Index()
{
    ViewBag.data = new KanbanDataModels().KanbanTasks();
    return View();
}
<!-- Index.cshtml -->
<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>

Prerequisites:

  • NuGet: Install-Package Syncfusion.EJ2.AspNet.Core
  • _ViewImports.cshtml: @addTagHelper *, Syncfusion.EJ2
  • _Layout.cshtml: Fluent CSS + ej2.min.js CDN links + <ejs-scripts></ejs-scripts>

→ For full setup details, see references/getting-started.md

When to Use This Skill

Use this skill when you need to:

  • Build a Kanban board — multi-column workflow visualization
  • Configure columns — single/multi-key columns, stacked headers, toggle, drag
  • Add swimlanes — group cards by team, user, or category with frozen rows
  • Enable drag-and-drop — between columns, swimlanes, or external components
  • Implement card dialogs — edit dialog with custom fields, templates, CRUD persistence
  • Bind remote data — OData, WebAPI, UrlAdaptor with CRUD operations
  • Apply sorting — by index, data source order, or custom field
  • Set card priorities — exact-position drop ordering via numeric rank field
  • Add column constraints — min/max card count validation per column
  • Show tooltips — default or template-based hover tooltips
  • Enable virtual scrolling — handle large datasets (100k+ cards) efficiently
  • Configure accessibility — WCAG 2.2 AA, keyboard navigation, screen reader support
  • Localize or RTL — multi-language support and right-to-left layout
  • Filter or search cards — using the query property
  • Change columns dynamically — update column configuration at runtime
  • Handle events — react to card clicks, drags, dialog open/close, data binding, and more
  • Call methods programmatically — add/update/delete cards, open dialogs, show/hide columns, refresh the board
  • Reference all properties — full list of component and sub-model properties with types and defaults

Documentation and Navigation Guide

Setup and First Board

📄 Read: references/getting-started.md

  • NuGet installation and package setup
  • Tag Helper registration in _ViewImports.cshtml
  • CDN configuration (CSS + JS) in _Layout.cshtml
  • Minimal Kanban board with 4 columns
  • Basic swimlane quickstart
  • License key registration
Data Binding

📄 Read: references/data-binding.md

  • Local data binding via @ViewBag.data
  • Remote data: OData, ODataV4, WebAPI, UrlAdaptor
  • <e-data-manager> configuration
  • CRUD operations with insertUrl, updateUrl, removeUrl, crudUrl
  • Custom adaptor pattern
  • actionFailure event handling
  • Ajax loading indicator behavior
Cards

📄 Read: references/cards.md

  • headerField (mandatory unique card ID)
  • showHeader — show/hide card header
  • contentField — card body text field
  • Card template with jsrender syntax
  • selectionType — None, Single, Multiple
  • Card color customization via colorField
Columns

📄 Read: references/columns.md

  • Single-key and multi-key keyField mapping
  • headerText — column display name
  • Column header template
  • allowToggle — collapsible columns
  • isExpanded — initial expand/collapse state
  • Stacked headers (<e-kanban-stackedheaders>)
  • Column-level drag (allowColumnDragAndDrop)
  • showItemCount — display card count in header
Swimlanes

📄 Read: references/swimlane.md

  • keyField — data field to group by
  • textField — display label field
  • Swimlane header template
  • sortBy — sort swimlane rows
  • allowDragAndDrop — enable cross-swimlane card drag
  • showEmptyRow — display empty swimlane rows
  • showItemCount — card count per swimlane
  • enableFrozenRows — sticky swimlane headers on scroll
Drag and Drop

📄 Read: references/drag-and-drop.md

  • Internal column drag (default enabled)
  • allowDragAndDrop="false" — disable all drag
  • Per-column allowDrag/allowDrop flags
  • transitionColumns — restrict allowed column transitions
  • Cross-swimlane drag via swimlaneSettings.allowDragAndDrop
  • External drag: externalDropId property
  • Kanban-to-Kanban drag (dragStop event + deleteCard/addCard)
  • Kanban-to-Treeview and Kanban-to-Schedule integration
Card Edit Dialog

📄 Read: references/dialog.md

  • Default dialog (double-click card)
  • Custom dialog fields via <e-kanban-dialogsettings fields="...">
  • Field types: String, Numeric, TextArea, DropDown, TextBox, Input
  • Custom dialog template with EJ2 component initialization
  • Preventing dialog open with dialogOpen event + args.cancel = true
  • Programmatic add: kanbanObj.openDialog('Add', data)
  • CRUD persistence via UrlAdaptor with server-side EditParams class
Sorting, Priority, and Validation

📄 Read: references/sorting-priority-validation.md

  • <e-kanban-sortsettings> with sortBy, field, direction
  • sortBy values: Index, DataSourceOrder, Custom
  • Priority field: <e-kanban-cardsettings priority="RankId"> for exact-position drops
  • Column min/max card count: minCount, maxCount on <e-kanban-column>
  • Constraint type: Column (default) or Swimlane
  • Visual color indication on constraint violation
Tooltip, Style, and Dimensions

📄 Read: references/tooltip-style-dimensions.md

  • enableTooltip="true" — hover tooltip on cards
  • tooltipTemplate — custom HTML tooltip template
  • CSS class reference for all Kanban elements
  • Sticky header pattern
  • width and height — auto, pixel, percentage values
Persistence, Localization, and Responsive

📄 Read: references/persistence-localization-responsive.md

  • enablePersistence="true" — localStorage state saving
  • locale property + ej.base.L10n.load() script
  • All locale key names for Kanban strings
  • enableRtl="true" — right-to-left layout
  • Mobile responsive behavior (swipe, tap-hold, swimlane menu)
Virtual Scrolling and Accessibility

📄 Read: references/virtual-scrolling-accessibility.md

  • enableVirtualization="true" — on-demand card rendering
  • cardHeight — fixed height required for virtualization
  • Server-side KanbanVirtualization parameter handling
  • WCAG 2.2 AA compliance table
  • WAI-ARIA attributes (aria-label, aria-expanded, aria-selected, etc.)
  • Keyboard shortcuts reference
  • AllowKeyboard="false" — disable keyboard interaction
Events

📄 Read: references/events.md

  • ActionBegin / ActionComplete / ActionFailure — lifecycle and error handling
  • CardClick / CardDoubleClick / CardRendered — card interaction hooks
  • ColumnDrag / ColumnDragStart / ColumnDrop — column reorder events
  • Created / DataBinding / DataBound / DataSourceChanged — initialization and data events
  • DialogOpen / DialogClose — intercept or cancel dialog (use args.cancel = true)
  • Drag / DragStart / DragStop — card drag lifecycle (cross-Kanban scenarios use DragStop)
  • QueryCellInfo — customize column cell elements before render
Methods

📄 Read: references/methods.md

  • AddCard / UpdateCard / DeleteCard — CRUD card operations
  • AddColumn / DeleteColumn — dynamic column management
  • OpenDialog / CloseDialog — programmatic dialog control
  • ShowColumn / HideColumn — toggle column visibility
  • GetCardDetails / GetColumnData / GetSelectedCards / GetSwimlaneData — data retrieval
  • ShowSpinner / HideSpinner — loading indicator control
  • Refresh / RefreshHeader / RefreshUI — board re-render helpers
  • DataBind / Destroy / AppendTo / Inject — component lifecycle utilities
All Properties Reference

📄 Read: references/properties.md

  • Complete list of all <ejs-kanban> root properties with types, defaults, and examples
  • Sub-model properties: CardSettings, Columns, SwimlaneSettings, SortSettings, DialogSettings, StackedHeaders
  • Enum values: ConstraintType, SelectionType, SortOrderBy, SortDirection
How-To Recipes

📄 Read: references/how-to.md

  • Dynamically change columns at runtime
  • Filter cards using the query property with dropdown
  • Search cards by field values with text input
  • Add header double-click event handler

Common Patterns

Swimlane Board with Remote Data

Use when: You need to group cards by user/team and load data from an API endpoint (OData, WebAPI, etc.) instead of a local collection.

<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>
Board with Column Constraints

Use when: You need to enforce WIP (Work-In-Progress) limits — preventing too few or too many cards from stacking in a column.

<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>
Board with Card Edit Dialog + CRUD

Use when: Users need to create, edit, or delete cards through a dialog form, with changes persisted to the server via 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>
Virtual Scrolling Board

Use when: The dataset is large (hundreds to thousands of cards) and rendering all cards at once would cause performance issues.

<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>

Key Properties Reference

PropertyTagValuesPurpose
keyField<ejs-kanban>Field name stringMaps cards to columns by status value
dataSource<ejs-kanban>@ViewBag.dataLocal data collection
enableVirtualization<ejs-kanban>true/falseVirtual scrolling for large data
enableTooltip<ejs-kanban>true/falseHover tooltip on cards
tooltipTemplate<ejs-kanban>Template ID stringCustom tooltip HTML template
allowDragAndDrop<ejs-kanban>true/falseGlobal drag-and-drop toggle
externalDropId<ejs-kanban>Element ID arrayTarget IDs for external drop
enablePersistence<ejs-kanban>true/falseSave state to localStorage
locale<ejs-kanban>Locale string (e.g. "de")UI string localization
enableRtl<ejs-kanban>true/falseRight-to-left layout
width<ejs-kanban>auto/px/%Board width
height<ejs-kanban>auto/px/%Board height
AllowKeyboard<ejs-kanban>true/falseKeyboard navigation toggle
headerField<e-kanban-cardsettings>Field name stringUnique card ID field (mandatory)
contentField<e-kanban-cardsettings>Field name stringCard body text field
template<e-kanban-cardsettings>Template ID stringCustom card HTML template
selectionType<e-kanban-cardsettings>None/Single/MultipleCard selection mode
priority<e-kanban-cardsettings>Field name stringNumeric rank field for ordering
showHeader<e-kanban-cardsettings>true/falseShow/hide card header
keyField<e-kanban-column>Status value(s)Column card filter (single or comma-separated)
headerText<e-kanban-column>Display stringColumn title
allowToggle<e-kanban-column>true/falseCollapsible column
isExpanded<e-kanban-column>true/falseInitial expand state
minCount<e-kanban-column>IntegerMinimum cards constraint
maxCount<e-kanban-column>IntegerMaximum cards constraint
showItemCount<e-kanban-column>true/falseShow card count badge
allowDrag<e-kanban-column>true/falseAllow cards to be dragged from column
allowDrop<e-kanban-column>true/falseAllow cards to be dropped into column
keyField<e-kanban-swimlanesettings>Field name stringSwimlane grouping field
textField<e-kanban-swimlanesettings>Field name stringSwimlane display label field
sortBy<e-kanban-sortsettings>Index/DataSourceOrder/CustomCard sort strategy
field<e-kanban-sortsettings>Field name stringField to sort by
direction<e-kanban-sortsettings>Ascending/DescendingSort direction

Data Model

The standard KanbanDataModels class for all examples:

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
}

Comments

Markdown supported