|
<SfKanban TValue="TasksModel" @ref="Kanbanobj" KeyField="Status" DataSource="Tasks">
<KanbanColumns>
<KanbanColumn HeaderText="Backlog" KeyField="@(new List<string>() { "Open" })"></KanbanColumn>
<KanbanColumn HeaderText="In Progress" KeyField="@(new List<string>() { "InProgress" })"></KanbanColumn>
<KanbanColumn HeaderText="Testing" KeyField="@(new List<string>() { "Testing" })"></KanbanColumn>
<KanbanColumn HeaderText="Done" KeyField="@(new List<string>() { "Close" })"></KanbanColumn>
</KanbanColumns>
<KanbanCardSettings HeaderField="Id" ContentField="Summary"></KanbanCardSettings>
<KanbanSwimlaneSettings KeyField="Assignee" AllowDragAndDrop="true" ShowEmptyRow="true" SortDirection="SortDirection.Descending" ShowItemCount="false"></KanbanSwimlaneSettings>
<KanbanEvents TValue="TasksModel" DragStart="@kanbanDragStart" DragStop="@kanbanDragStop"></KanbanEvents>
</SfKanban>
@code {
. . .
SfKanban<TasksModel> Kanbanobj;
public string assignee { get; set; }
public TasksModel dragData { get; set; }
public void kanbanDragStart(DragEventArgs<TasksModel> args)
{
//Store card data.
this.dragData = args.Data[0];
//Store current assignee name.
this.assignee = args.Data[0].Assignee;
}
public void kanbanDragStop(DragEventArgs<TasksModel> args)
{
var totalData = this.Kanbanobj.DataSource.ToArray().Length;
var currentCount = 0;
var isValid = false;
//Ensuing if the dragged swimlane have no other data.
foreach (var data in this.Kanbanobj.DataSource)
{
var currentData = data;
if (currentData.Assignee == this.assignee && currentData != this.dragData)
{
return;
}
else
{
currentCount++;
if (currentCount == totalData)
{
isValid = true;
}
}
}
// Adding dummy data to the swimalane with the keyfield which is not shown in the Kanban.
if (isValid)
{
this.Kanbanobj.AddCard(new TasksModel { Id = "Dummy ID", Title = "Dummy Title", Status = "Validate", Summary = "Dummy Summary", Assignee = this.assignee });
}
}
. . .
} |