Hi,
I need to have a ForeignKey relationship in the KanbanSwimlaneSettings so I can extract the string value for the header of the swim lane.
Something like this:
public List
public List
public class AlertEvent
{
public int AlertLevel;
}
public class AlertLevel
{
public int AlertLevelID;
public string Name;
}
// Where AlertLevel in class "AlertEvent" is a ForeignKey to AlertLevelID in class "AlertLevel"
<SfKanban TValue="AlertEvent" DataSource=@Alerts >
<KanbanSwimlaneSettings KeyField=@nameof(AlertEvent.AlertLevel) KeyForeignField=@nameof(AlertLevel.AlertLevelID) KeyForeignValue=@nameof(AlertLevel.Name) ForeignDataSource=@AlertLevels EnableFrozenRows="true" />
</SfKanban>
Currently, Kanban does not have support for Foreign Key relationships. Is there a way around this?
Thank you,
Kenney
Hi Gunasekar,
Were you able to validate this query?
Thanks,
Kenney
|
<SfKanban @ref="kanbanObj" TValue="TasksModel" KeyField="Status" DataSource="@DataSource">
<KanbanEvents TValue="TasksModel" ></KanbanEvents>
<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" TextField="Assignee" SortDirection="SortDirection.Ascending"></KanbanSwimlaneSettings>
</SfKanban> @code { SfKanban<TasksModel> kanbanObj;
public List<TasksModel> DataSource = new List<TasksModel>() { };
public class TasksModel
{
public int Id { get; set; }
public string Title { get; set; }
public string Status { get; set; }
public int TaskId { get; set; }
public string Summary { get; set; }
public string Assignee { get; set; } } public void OnSorting(SwimlaneSortEventArgs args)
{
args.SwimlaneRows = args.SwimlaneRows.OrderBy(a =>
DateTime.Parse(a.KeyField)).ToList();
} public class Tasks1Model
{
public int Id { get; set; }
public string Status { get; set; }
}
public class Tasks2Model
{
public int Id { get; set; }
public int StatusId { get; set; }
public string Assignee { get; set; }
public string Summary { get; set; }
} public List<TasksModel> cards; protected override void OnInitialized()
{
var cards = Tasks1.GroupJoin(Tasks2,
c => c.Id,
b => b.StatusId,
(c, b) => new TasksModel
{
Id = c.Id,
Status = c.Status,
Assignee = b.Select(x => x.Assignee).FirstOrDefault(),
Summary = b.Select(x => x.Summary).FirstOrDefault()
}); List<TasksModel> selectedCollection = cards.ToList();
DataSource = selectedCollection;
}
public List<Tasks1Model> Tasks1 = new List<Tasks1Model>()
{
new Tasks1Model { Id = 1, Status = "Open" },
new Tasks1Model { Id = 2, Status = "Open" },
new Tasks1Model { Id = 3, Status = "Testing" },
new Tasks1Model { Id = 4, Status = "Testing" },
new Tasks1Model { Id = 5, Status = "Testing" },
};
public List<Tasks2Model> Tasks2 = new List<Tasks2Model>()
{
new Tasks2Model { Id = 11, StatusId = 1, Summary = "Open summary", Assignee= "Andrew" },
new Tasks2Model { Id = 12, StatusId = 2, Summary = "Open a card", Assignee= "Andrew" },
new Tasks2Model { Id = 13, StatusId = 3, Summary = "Open a card", Assignee= "Andrew" },
new Tasks2Model { Id = 14, StatusId = 4, Summary = "Open a card", Assignee= "Nancy" },
new Tasks2Model { Id = 15, StatusId = 5, Summary = "Open a card", Assignee= "Nancy" },
}; } |