Radzentree를 사용할 때,
ChildrenProperty를 이용하여 자동으로 재귀 TreeNodes를 생성할 수 있습니다.
▶재귀 TreeNode가 적용될 수 있도록 ChildrenProperty에 세팅할 수 있는 모델을 생성합니다.
public Class TreeItem
{
public string? pid { get; set; }
public string? id { get; set; }
public string? name { get; set; }
public bool isExpand { get; set; }
public bool isSelect { get; set; }
public List<TreeItem> Children { get; set; }
public static TreeItem CopyFrom(오리지널모델)
{
var item = new TreeItem();
// 오리지널모델을 TreeItem모델로 카피.
return item;
}
}
생성한 모델을 이용하여 ChildrenProperty를 설정하여 줍니다.
본인의 아이디와 부모의 아이디(parentId)를 이상없이 세팅한다면
ChildrenProperty에 의해 자동으로 재귀 Tree구조를 생성할 수 있습니다.
<RadzenTree Data=@TreeNodes>
<RadzenTreeLevel TextProperty="name" ChildrenProperty="Children"
Expanded=@(e => (e as TreeItem).isExpand)
HasChildren=@(e => (e as TreeItem).Children.Any() ?? false) />
</RadzenTree>
@code {
IEnumerable<TreeItem> TreeNodes;
protected override void OnInitialized()
{
TreeMenus = SetTreeChildren(오리지널모델리스트, 부모아이디);
}
private List<TreeItem> SetTreeNodeChildren(List<오리지널모델> targets, string parentId = null)
{
List<TreeItem> newItem = new List<TreeItem>();
var search = targets.Where(m => m.pid == parentId);
if(search == null)
return null;
foreach(var item in search)
{
var tempItem = TreeItem.CopyFrom(item);
tempItem.Children = SetTreeNodeChildren(targets, item.id);
newItem.Add(tempItem);
}
}
}