CODEKILLER

반응형

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);
    }
 }
}
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band