
syncfusion-aspnetcore-kanban
Guide for implementing the Syncfusion ASP.NET Core Kanban component using Tag Helper syntax. Use this skill when building task boards, configuring columns and swimlanes, or enabling drag-and-drop. Covers card settings, dialogs, and binding remote data for ASP.NET Core MVC and Razor Pages.
- Installs
- 107
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/syncfusion/aspnetcore-ui-components-skills --skill syncfusion-aspnetcore-kanban- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads syncfusion-aspnetcore-kanban automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Implementing Syncfusion ASP.NET Core Kanban
Table of Contents
- Quick Start
- When to Use This Skill
- Documentation and Navigation Guide
- Common Patterns
- Key Properties Reference
- Data Model
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.jsCDN 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
queryproperty - 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
actionFailureevent handling- Ajax loading indicator behavior
Cards
📄 Read: references/cards.md
headerField(mandatory unique card ID)showHeader— show/hide card headercontentField— 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
keyFieldmapping headerText— column display name- Column header template
allowToggle— collapsible columnsisExpanded— 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 bytextField— display label field- Swimlane header template
sortBy— sort swimlane rowsallowDragAndDrop— enable cross-swimlane card dragshowEmptyRow— display empty swimlane rowsshowItemCount— card count per swimlaneenableFrozenRows— 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/allowDropflags transitionColumns— restrict allowed column transitions- Cross-swimlane drag via
swimlaneSettings.allowDragAndDrop - External drag:
externalDropIdproperty - Kanban-to-Kanban drag (
dragStopevent +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
dialogOpenevent +args.cancel = true - Programmatic add:
kanbanObj.openDialog('Add', data) - CRUD persistence via UrlAdaptor with server-side
EditParamsclass
Sorting, Priority, and Validation
📄 Read: references/sorting-priority-validation.md
<e-kanban-sortsettings>withsortBy,field,directionsortByvalues: Index, DataSourceOrder, Custom- Priority field:
<e-kanban-cardsettings priority="RankId">for exact-position drops - Column min/max card count:
minCount,maxCounton<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 cardstooltipTemplate— custom HTML tooltip template- CSS class reference for all Kanban elements
- Sticky header pattern
widthandheight— auto, pixel, percentage values
Persistence, Localization, and Responsive
📄 Read: references/persistence-localization-responsive.md
enablePersistence="true"— localStorage state savinglocaleproperty +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 renderingcardHeight— fixed height required for virtualization- Server-side
KanbanVirtualizationparameter 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 handlingCardClick/CardDoubleClick/CardRendered— card interaction hooksColumnDrag/ColumnDragStart/ColumnDrop— column reorder eventsCreated/DataBinding/DataBound/DataSourceChanged— initialization and data eventsDialogOpen/DialogClose— intercept or cancel dialog (useargs.cancel = true)Drag/DragStart/DragStop— card drag lifecycle (cross-Kanban scenarios useDragStop)QueryCellInfo— customize column cell elements before render
Methods
📄 Read: references/methods.md
AddCard/UpdateCard/DeleteCard— CRUD card operationsAddColumn/DeleteColumn— dynamic column managementOpenDialog/CloseDialog— programmatic dialog controlShowColumn/HideColumn— toggle column visibilityGetCardDetails/GetColumnData/GetSelectedCards/GetSwimlaneData— data retrievalShowSpinner/HideSpinner— loading indicator controlRefresh/RefreshHeader/RefreshUI— board re-render helpersDataBind/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
queryproperty 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
| Property | Tag | Values | Purpose |
|---|---|---|---|
keyField | <ejs-kanban> | Field name string | Maps cards to columns by status value |
dataSource | <ejs-kanban> | @ViewBag.data | Local data collection |
enableVirtualization | <ejs-kanban> | true/false | Virtual scrolling for large data |
enableTooltip | <ejs-kanban> | true/false | Hover tooltip on cards |
tooltipTemplate | <ejs-kanban> | Template ID string | Custom tooltip HTML template |
allowDragAndDrop | <ejs-kanban> | true/false | Global drag-and-drop toggle |
externalDropId | <ejs-kanban> | Element ID array | Target IDs for external drop |
enablePersistence | <ejs-kanban> | true/false | Save state to localStorage |
locale | <ejs-kanban> | Locale string (e.g. "de") | UI string localization |
enableRtl | <ejs-kanban> | true/false | Right-to-left layout |
width | <ejs-kanban> | auto/px/% | Board width |
height | <ejs-kanban> | auto/px/% | Board height |
AllowKeyboard | <ejs-kanban> | true/false | Keyboard navigation toggle |
headerField | <e-kanban-cardsettings> | Field name string | Unique card ID field (mandatory) |
contentField | <e-kanban-cardsettings> | Field name string | Card body text field |
template | <e-kanban-cardsettings> | Template ID string | Custom card HTML template |
selectionType | <e-kanban-cardsettings> | None/Single/Multiple | Card selection mode |
priority | <e-kanban-cardsettings> | Field name string | Numeric rank field for ordering |
showHeader | <e-kanban-cardsettings> | true/false | Show/hide card header |
keyField | <e-kanban-column> | Status value(s) | Column card filter (single or comma-separated) |
headerText | <e-kanban-column> | Display string | Column title |
allowToggle | <e-kanban-column> | true/false | Collapsible column |
isExpanded | <e-kanban-column> | true/false | Initial expand state |
minCount | <e-kanban-column> | Integer | Minimum cards constraint |
maxCount | <e-kanban-column> | Integer | Maximum cards constraint |
showItemCount | <e-kanban-column> | true/false | Show card count badge |
allowDrag | <e-kanban-column> | true/false | Allow cards to be dragged from column |
allowDrop | <e-kanban-column> | true/false | Allow cards to be dropped into column |
keyField | <e-kanban-swimlanesettings> | Field name string | Swimlane grouping field |
textField | <e-kanban-swimlanesettings> | Field name string | Swimlane display label field |
sortBy | <e-kanban-sortsettings> | Index/DataSourceOrder/Custom | Card sort strategy |
field | <e-kanban-sortsettings> | Field name string | Field to sort by |
direction | <e-kanban-sortsettings> | Ascending/Descending | Sort 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
}
FAQ
What does the syncfusion-aspnetcore-kanban skill do?
Guide for implementing the Syncfusion ASP.NET Core Kanban component using Tag Helper syntax. Use this skill when building task boards, configuring columns and swimlanes, or enabling drag-and-drop. Covers card settings, dialogs, and binding remote data for ASP.NET Core MVC and Razor Pages.
How do I install syncfusion-aspnetcore-kanban?
Run npx skills add https://github.com/syncfusion/aspnetcore-ui-components-skills --skill syncfusion-aspnetcore-kanban in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/syncfusion-aspnetcore-kanban/ (personal) or .claude/skills/syncfusion-aspnetcore-kanban/ (project).
Which AI agents can use syncfusion-aspnetcore-kanban?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is syncfusion-aspnetcore-kanban safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains syncfusion-aspnetcore-kanban?
It is published by syncfusion in syncfusion/aspnetcore-ui-components-skills. It has 107 recorded installs.
More from syncfusion/aspnetcore-ui-components-skills
syncfusion-aspnetcore-charts
syncfusion/aspnetcore-ui-components-skills
Implements Syncfusion ASP.NET Core Chart (SfChart) for data visualization. Use this when building charts, visualizing time-series or categorical data, or creating dashboards. Covers series configuration (line, bar, pie), axes, tooltips, legends, and customization for ASP.NET Core applications.
syncfusion-aspnetcore-common
syncfusion/aspnetcore-ui-components-skills
CONFIGURATION GUIDE — Assist with Syncfusion ASP.NET Core EJ2 components setup, localization, and version compatibility. Use when: installing Syncfusion packages, configuring globalization/localization, selecting compatible versions.
syncfusion-aspnetcore-license
syncfusion/aspnetcore-ui-components-skills
Open the skill to read its SKILL.md instructions.
syncfusion-aspnetcore-grid
syncfusion/aspnetcore-ui-components-skills
Implements Syncfusion ASP.NET Core Grid component for feature-rich data tables and grids. Use this when working with data display, sorting, filtering, grouping, aggregates, editing, or exporting. This skill covers grid configuration, CRUD operations, virtual scrolling or infinite scrolling, hierarchy grids, state persistence, and advanced data management features for data-intensive applications.
syncfusion-aspnetcore-security
syncfusion/aspnetcore-ui-components-skills
Open the skill to read its SKILL.md instructions.
syncfusion-aspnetcore-gantt-chart
syncfusion/aspnetcore-ui-components-skills
Implement Syncfusion ASP.NET Core Gantt Chart component (EJ2) for project management and task scheduling. Use this when working with Gantt charts, project timelines, task dependencies, or resource allocation in ASP.NET Core applications (Tag Helper/Razor Pages/MVC). This skill covers data binding, task management, editing, filtering, export, and timeline customization.
Popular frontend & design skills
setup-matt-pocock-skills
mattpocock/skills
Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.
frontend-design
anthropics/skills
Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.
hyperframes-animation
heygen-com/hyperframes
All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.
prototype
mattpocock/skills
Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.
hyperframes-core
heygen-com/hyperframes
The HyperFrames composition contract — build one renderable project. Use for composition structure, the data- timing attributes, class="clip", tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.
vercel-react-best-practices
vercel-labs/agent-skills
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.