syncfusion-aspnetcore-kanban
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseImplementing Syncfusion ASP.NET Core Kanban
实现Syncfusion ASP.NET Core Kanban
Table of Contents
目录
Quick Start
快速入门
csharp
// HomeController.cs
public IActionResult Index()
{
ViewBag.data = new KanbanDataModels().KanbanTasks();
return View();
}html
<!-- 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 - : Fluent CSS +
_Layout.cshtmlCDN links +ej2.min.js<ejs-scripts></ejs-scripts>
→ For full setup details, see references/getting-started.md
csharp
// HomeController.cs
public IActionResult Index()
{
ViewBag.data = new KanbanDataModels().KanbanTasks();
return View();
}html
<!-- 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>前置条件:
- NuGet:
Install-Package Syncfusion.EJ2.AspNet.Core - :
_ViewImports.cshtml@addTagHelper *, Syncfusion.EJ2 - : Fluent CSS +
_Layout.cshtmlCDN链接 +ej2.min.js<ejs-scripts></ejs-scripts>
→ 完整搭建细节请查看 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 property
query - 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
在以下场景中可使用本技能:
- 构建Kanban看板 — 多列工作流可视化
- 配置列 — 单键/多键列、堆叠表头、折叠、拖拽
- 添加泳道 — 按团队、用户或类别分组卡片,支持冻结行
- 启用拖放 — 在列之间、泳道之间或与外部组件进行拖放
- 实现卡片对话框 — 带自定义字段、模板、CRUD持久化的编辑对话框
- 绑定远程数据 — OData、WebAPI、UrlAdaptor及CRUD操作
- 应用排序 — 按索引、数据源顺序或自定义字段排序
- 设置卡片优先级 — 通过数字排名字段实现精准位置拖放排序
- 添加列约束 — 每列卡片数量的最小/最大值验证
- 显示工具提示 — 默认或基于模板的悬停工具提示
- 启用虚拟滚动 — 高效处理大型数据集(10万+卡片)
- 配置无障碍访问 — 符合WCAG 2.2 AA标准,支持键盘导航、屏幕阅读器
- 本地化或RTL布局 — 多语言支持与从右到左布局
- 筛选或搜索卡片 — 使用属性
query - 动态修改列 — 运行时更新列配置
- 处理事件 — 响应卡片点击、拖拽、对话框打开/关闭、数据绑定等操作
- 调用编程方法 — 添加/更新/删除卡片、打开对话框、显示/隐藏列、刷新看板
- 查阅所有属性 — 组件及子模型属性的完整列表,包含类型与默认值
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
📄 阅读: references/getting-started.md
- NuGet安装与包配置
- 在中注册Tag Helper
_ViewImports.cshtml - 在中配置CDN(CSS + JS)
_Layout.cshtml - 包含4列的极简Kanban看板
- 泳道快速入门
- 许可证密钥注册
Data Binding
数据绑定
📄 Read: references/data-binding.md
- Local data binding via
@ViewBag.data - Remote data: OData, ODataV4, WebAPI, UrlAdaptor
- configuration
<e-data-manager> - CRUD operations with ,
insertUrl,updateUrl,removeUrlcrudUrl - Custom adaptor pattern
- event handling
actionFailure - Ajax loading indicator behavior
📄 阅读: references/data-binding.md
- 通过绑定本地数据
@ViewBag.data - 远程数据:OData、ODataV4、WebAPI、UrlAdaptor
- 配置
<e-data-manager> - 使用、
insertUrl、updateUrl、removeUrl实现CRUD操作crudUrl - 自定义适配器模式
- 事件处理
actionFailure - Ajax加载指示器行为
Cards
卡片
📄 Read: references/cards.md
- (mandatory unique card ID)
headerField - — show/hide card header
showHeader - — card body text field
contentField - Card template with jsrender syntax
- — None, Single, Multiple
selectionType - Card color customization via
colorField
📄 阅读: references/cards.md
- (必填的唯一卡片ID)
headerField - — 显示/隐藏卡片表头
showHeader - — 卡片正文文本字段
contentField - 使用jsrender语法的卡片模板
- — None、Single、Multiple
selectionType - 通过自定义卡片颜色
colorField
Columns
列
📄 Read: references/columns.md
- Single-key and multi-key mapping
keyField - — column display name
headerText - Column header template
- — collapsible columns
allowToggle - — initial expand/collapse state
isExpanded - Stacked headers ()
<e-kanban-stackedheaders> - Column-level drag ()
allowColumnDragAndDrop - — display card count in header
showItemCount
📄 阅读: references/columns.md
- 单键与多键映射
keyField - — 列显示名称
headerText - 列表头模板
- — 可折叠列
allowToggle - — 初始展开/折叠状态
isExpanded - 堆叠表头()
<e-kanban-stackedheaders> - 列级拖拽()
allowColumnDragAndDrop - — 在表头显示卡片数量
showItemCount
Swimlanes
泳道
📄 Read: references/swimlane.md
- — data field to group by
keyField - — display label field
textField - Swimlane header template
- — sort swimlane rows
sortBy - — enable cross-swimlane card drag
allowDragAndDrop - — display empty swimlane rows
showEmptyRow - — card count per swimlane
showItemCount - — sticky swimlane headers on scroll
enableFrozenRows
📄 阅读: references/swimlane.md
- — 用于分组的数据字段
keyField - — 显示标签字段
textField - 泳道表头模板
- — 排序泳道行
sortBy - — 启用跨泳道卡片拖拽
allowDragAndDrop - — 显示空泳道行
showEmptyRow - — 每个泳道的卡片数量
showItemCount - — 滚动时固定泳道表头
enableFrozenRows
Drag and Drop
拖放功能
📄 Read: references/drag-and-drop.md
- Internal column drag (default enabled)
- — disable all drag
allowDragAndDrop="false" - Per-column /
allowDragflagsallowDrop - — restrict allowed column transitions
transitionColumns - Cross-swimlane drag via
swimlaneSettings.allowDragAndDrop - External drag: property
externalDropId - Kanban-to-Kanban drag (event +
dragStop/deleteCard)addCard - Kanban-to-Treeview and Kanban-to-Schedule integration
📄 阅读: references/drag-and-drop.md
- 列内拖拽(默认启用)
- — 禁用所有拖拽
allowDragAndDrop="false" - 每列的/
allowDrag标志allowDrop - — 限制允许的列转换
transitionColumns - 通过实现跨泳道拖拽
swimlaneSettings.allowDragAndDrop - 外部拖拽:属性
externalDropId - Kanban到Kanban的拖拽(事件 +
dragStop/deleteCard)addCard - Kanban与Treeview、Kanban与Schedule的集成
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 event +
dialogOpenargs.cancel = true - Programmatic add:
kanbanObj.openDialog('Add', data) - CRUD persistence via UrlAdaptor with server-side class
EditParams
📄 阅读: references/dialog.md
- 默认对话框(双击卡片)
- 通过自定义对话框字段
<e-kanban-dialogsettings fields="..."> - 字段类型:String、Numeric、TextArea、DropDown、TextBox、Input
- 包含EJ2组件初始化的自定义对话框模板
- 通过事件 +
dialogOpen阻止对话框打开args.cancel = true - 编程式添加:
kanbanObj.openDialog('Add', data) - 通过UrlAdaptor结合服务端类实现CRUD持久化
EditParams
Sorting, Priority, and Validation
排序、优先级与验证
📄 Read: references/sorting-priority-validation.md
- with
<e-kanban-sortsettings>,sortBy,fielddirection - values: Index, DataSourceOrder, Custom
sortBy - Priority field: for exact-position drops
<e-kanban-cardsettings priority="RankId"> - Column min/max card count: ,
minCountonmaxCount<e-kanban-column> - Constraint type: Column (default) or Swimlane
- Visual color indication on constraint violation
📄 阅读: references/sorting-priority-validation.md
- 包含、
sortBy、field的direction<e-kanban-sortsettings> - 取值:Index、DataSourceOrder、Custom
sortBy - 优先级字段:用于精准位置拖放
<e-kanban-cardsettings priority="RankId"> - 列最小/最大卡片数量:上的
<e-kanban-column>、minCountmaxCount - 约束类型:列(默认)或泳道
- 约束违规时的视觉颜色提示
Tooltip, Style, and Dimensions
工具提示、样式与尺寸
📄 Read: references/tooltip-style-dimensions.md
- — hover tooltip on cards
enableTooltip="true" - — custom HTML tooltip template
tooltipTemplate - CSS class reference for all Kanban elements
- Sticky header pattern
- and
width— auto, pixel, percentage valuesheight
📄 阅读: references/tooltip-style-dimensions.md
- — 卡片悬停工具提示
enableTooltip="true" - — 自定义HTML工具提示模板
tooltipTemplate - 所有Kanban元素的CSS类参考
- 固定表头模式
- 与
width— auto、像素、百分比值height
Persistence, Localization, and Responsive
持久化、本地化与响应式
📄 Read: references/persistence-localization-responsive.md
- — localStorage state saving
enablePersistence="true" - property +
localescriptej.base.L10n.load() - All locale key names for Kanban strings
- — right-to-left layout
enableRtl="true" - Mobile responsive behavior (swipe, tap-hold, swimlane menu)
📄 阅读: references/persistence-localization-responsive.md
- — 保存状态到localStorage
enablePersistence="true" - 属性 +
locale脚本ej.base.L10n.load() - Kanban字符串的所有本地化键名
- — 从右到左布局
enableRtl="true" - 移动端响应式行为(滑动、长按、泳道菜单)
Virtual Scrolling and Accessibility
虚拟滚动与无障碍访问
📄 Read: references/virtual-scrolling-accessibility.md
- — on-demand card rendering
enableVirtualization="true" - — fixed height required for virtualization
cardHeight - Server-side parameter handling
KanbanVirtualization - WCAG 2.2 AA compliance table
- WAI-ARIA attributes (,
aria-label,aria-expanded, etc.)aria-selected - Keyboard shortcuts reference
- — disable keyboard interaction
AllowKeyboard="false"
📄 阅读: references/virtual-scrolling-accessibility.md
- — 按需渲染卡片
enableVirtualization="true" - — 虚拟滚动所需的固定高度
cardHeight - 服务端参数处理
KanbanVirtualization - WCAG 2.2 AA合规性表格
- WAI-ARIA属性(、
aria-label、aria-expanded等)aria-selected - 键盘快捷键参考
- — 禁用键盘交互
AllowKeyboard="false"
Events
事件
📄 Read: references/events.md
- /
ActionBegin/ActionComplete— lifecycle and error handlingActionFailure - /
CardClick/CardDoubleClick— card interaction hooksCardRendered - /
ColumnDrag/ColumnDragStart— column reorder eventsColumnDrop - /
Created/DataBinding/DataBound— initialization and data eventsDataSourceChanged - /
DialogOpen— intercept or cancel dialog (useDialogClose)args.cancel = true - /
Drag/DragStart— card drag lifecycle (cross-Kanban scenarios useDragStop)DragStop - — customize column cell elements before render
QueryCellInfo
📄 阅读: references/events.md
- /
ActionBegin/ActionComplete— 生命周期与错误处理ActionFailure - /
CardClick/CardDoubleClick— 卡片交互钩子CardRendered - /
ColumnDrag/ColumnDragStart— 列重排事件ColumnDrop - /
Created/DataBinding/DataBound— 初始化与数据事件DataSourceChanged - /
DialogOpen— 拦截或取消对话框(使用DialogClose)args.cancel = true - /
Drag/DragStart— 卡片拖拽生命周期(跨Kanban场景使用DragStop)DragStop - — 渲染前自定义列单元格元素
QueryCellInfo
Methods
方法
📄 Read: references/methods.md
- /
AddCard/UpdateCard— CRUD card operationsDeleteCard - /
AddColumn— dynamic column managementDeleteColumn - /
OpenDialog— programmatic dialog controlCloseDialog - /
ShowColumn— toggle column visibilityHideColumn - /
GetCardDetails/GetColumnData/GetSelectedCards— data retrievalGetSwimlaneData - /
ShowSpinner— loading indicator controlHideSpinner - /
Refresh/RefreshHeader— board re-render helpersRefreshUI - /
DataBind/Destroy/AppendTo— component lifecycle utilitiesInject
📄 阅读: references/methods.md
- /
AddCard/UpdateCard— 卡片CRUD操作DeleteCard - /
AddColumn— 动态列管理DeleteColumn - /
OpenDialog— 编程式对话框控制CloseDialog - /
ShowColumn— 切换列可见性HideColumn - /
GetCardDetails/GetColumnData/GetSelectedCards— 数据检索GetSwimlaneData - /
ShowSpinner— 加载指示器控制HideSpinner - /
Refresh/RefreshHeader— 看板重渲染辅助方法RefreshUI - /
DataBind/Destroy/AppendTo— 组件生命周期工具Inject
All Properties Reference
所有属性参考
📄 Read: references/properties.md
- Complete list of all root properties with types, defaults, and examples
<ejs-kanban> - Sub-model properties: ,
CardSettings,Columns,SwimlaneSettings,SortSettings,DialogSettingsStackedHeaders - Enum values: ,
ConstraintType,SelectionType,SortOrderBySortDirection
📄 阅读: references/properties.md
- 根属性的完整列表,包含类型、默认值与示例
<ejs-kanban> - 子模型属性:、
CardSettings、Columns、SwimlaneSettings、SortSettings、DialogSettingsStackedHeaders - 枚举值:、
ConstraintType、SelectionType、SortOrderBySortDirection
How-To Recipes
实操方案
📄 Read: references/how-to.md
- Dynamically change columns at runtime
- Filter cards using the property with dropdown
query - Search cards by field values with text input
- Add header double-click event handler
📄 阅读: references/how-to.md
- 运行时动态修改列
- 使用下拉框结合属性筛选卡片
query - 通过文本输入按字段值搜索卡片
- 添加表头双击事件处理程序
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.
html
<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>适用场景: 需要按用户/团队分组卡片,并从API端点(OData、WebAPI等)加载数据而非本地集合。
html
<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.
html
<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>适用场景: 需要执行WIP(在制品)限制 — 防止列中卡片数量过少或过多。
html
<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
带卡片编辑对话框+CRUD的看板
Use when: Users need to create, edit, or delete cards through a dialog form, with changes persisted to the server via.UrlAdaptor
html
<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>适用场景: 用户需要通过对话框表单创建、编辑或删除卡片,并通过将更改持久化到服务器。UrlAdaptor
html
<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.
html
<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>适用场景: 数据集较大(数百到数千张卡片),一次性渲染所有卡片会导致性能问题。
html
<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 |
|---|---|---|---|
| | Field name string | Maps cards to columns by status value |
| | | Local data collection |
| | true/false | Virtual scrolling for large data |
| | true/false | Hover tooltip on cards |
| | Template ID string | Custom tooltip HTML template |
| | true/false | Global drag-and-drop toggle |
| | Element ID array | Target IDs for external drop |
| | true/false | Save state to localStorage |
| | Locale string (e.g. | UI string localization |
| | true/false | Right-to-left layout |
| | auto/px/% | Board width |
| | auto/px/% | Board height |
| | true/false | Keyboard navigation toggle |
| | Field name string | Unique card ID field (mandatory) |
| | Field name string | Card body text field |
| | Template ID string | Custom card HTML template |
| | None/Single/Multiple | Card selection mode |
| | Field name string | Numeric rank field for ordering |
| | true/false | Show/hide card header |
| | Status value(s) | Column card filter (single or comma-separated) |
| | Display string | Column title |
| | true/false | Collapsible column |
| | true/false | Initial expand state |
| | Integer | Minimum cards constraint |
| | Integer | Maximum cards constraint |
| | true/false | Show card count badge |
| | true/false | Allow cards to be dragged from column |
| | true/false | Allow cards to be dropped into column |
| | Field name string | Swimlane grouping field |
| | Field name string | Swimlane display label field |
| | Index/DataSourceOrder/Custom | Card sort strategy |
| | Field name string | Field to sort by |
| | Ascending/Descending | Sort direction |
| 属性 | 标签 | 取值 | 用途 |
|---|---|---|---|
| | 字段名字符串 | 按状态值将卡片映射到列 |
| | | 本地数据集合 |
| | true/false | 大型数据的虚拟滚动 |
| | true/false | 卡片悬停工具提示 |
| | 模板ID字符串 | 自定义工具提示HTML模板 |
| | true/false | 全局拖放开关 |
| | 元素ID数组 | 外部拖放的目标ID |
| | true/false | 将状态保存到localStorage |
| | 本地化字符串(如 | UI字符串本地化 |
| | true/false | 从右到左布局 |
| | auto/px/% | 看板宽度 |
| | auto/px/% | 看板高度 |
| | true/false | 键盘导航开关 |
| | 字段名字符串 | 必填的唯一卡片ID字段 |
| | 字段名字符串 | 卡片正文文本字段 |
| | 模板ID字符串 | 自定义卡片HTML模板 |
| | None/Single/Multiple | 卡片选择模式 |
| | 字段名字符串 | 用于排序的数字排名字段 |
| | true/false | 显示/隐藏卡片表头 |
| | 状态值(单个或逗号分隔) | 列卡片筛选条件 |
| | 显示字符串 | 列标题 |
| | true/false | 可折叠列 |
| | true/false | 初始展开状态 |
| | 整数 | 最小卡片数量约束 |
| | 整数 | 最大卡片数量约束 |
| | true/false | 显示卡片数量徽章 |
| | true/false | 允许从列中拖拽卡片 |
| | true/false | 允许向列中拖放卡片 |
| | 字段名字符串 | 泳道分组字段 |
| | 字段名字符串 | 泳道显示标签字段 |
| | Index/DataSourceOrder/Custom | 卡片排序策略 |
| | 字段名字符串 | 排序依据字段 |
| | Ascending/Descending | 排序方向 |
Data Model
数据模型
The standard class for all examples:
KanbanDataModelscsharp
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
}所有示例使用的标准类:
KanbanDataModelscsharp
public class KanbanDataModels
{
public string Id { get; set; }
public string Title { get; set; }
public string Status { get; set; } // 映射到keyField
public string Summary { get; set; } // 卡片正文内容
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; } // 用于泳道分组
public int RankId { get; set; } // 用于优先级排序的数字排名
public string Color { get; set; } // 可选的卡片颜色字段
}