2014-12-09 1 views
0

가상 폴더 구조 목록이 있습니다. 그 목록을 JsTreeView에 바인딩해야합니다. 목록에는 다음과 같은 내용이 포함될 수 있습니다. 항목데이터베이스에서 JsTreeView 데이터 전달

Dh 
Dh\Sub 
Dh\Sub\Another 
Dh1 
Dh1\Sub1 
Dh1\Sub1\Another1 
Dh1\Sub1\Another2 

목록 원하는 출력

Dh 
    |______ Sub 
      |_____Another 
Dh1 
    |______ Sub1 
      |_____ Another1 
      |_____ Another2 

으로, 나는 재귀를 사용하여 논리를 시도했다. 그러나 성공하지 못했습니다. 아무도 내가 이걸 어떻게 얻을 수 있는지 말해 줄 수 없어요. 문제에 대한 도움을 주시면 감사하겠습니다. 내가 JSON에 DB 데이터를 직렬화하고 JS 트리보기 속성이 하위 노드를 포함

/// <summary> 
/// Model which represents data for js tree view 
/// </summary> 
public class JsTreeViewNode 
{ 
    private int int_id; 

    [JsonProperty(PropertyName = "id")] 
    public string Id { get; set; } 

    [JsonProperty(PropertyName = "text")] 
    public string Text { get; set; } 

    [JsonProperty(PropertyName = "children")] 
    public List<JsTreeViewNode> Children { get; set; } 

    [JsonProperty(PropertyName = "a_attr")] 
    public AnchorAttribute AAttributes { get; set; } 

    [JsonIgnore] 
    public int CurrentLevel { get; set; } 

    [JsonIgnore] 
    public int SortOrder { get; set; } 

    public JsTreeViewNode() 
    { 
     AAttributes = new AnchorAttribute(); 
    } 

    public JsTreeViewNode(int id) 
     : this() 
    { 
     int_id = id; 
     this.Id = int_id.ToString(); 
     AAttributes.Id = this.Id; 
    } 

    public int GetNodeId() 
    { 
     return int_id; 
    } 

    public JsTreeViewNode Clone() 
    { 
     var clone = (JsTreeViewNode)this.MemberwiseClone(); 
     clone.Children = new List<JsTreeViewNode>(); 
     clone.AAttributes = this.AAttributes.Clone(); 
     return clone; 
    } 
} 

public class AnchorAttribute 
{ 
    [JsonProperty(PropertyName = "draggable")] 
    public string Draggable = "false"; 

    [JsonProperty(PropertyName = "id")] 
    public string Id; 

    [JsonProperty(PropertyName = "class", NullValueHandling = NullValueHandling.Ignore)] 
    public string CssClassname; 

    public virtual AnchorAttribute Clone() 
    { 
     var clone = (AnchorAttribute)this.MemberwiseClone(); 
     return clone; 
    } 
} 

어린이에로드 할 다음과 같은 클래스를 사용하고

감사

답변

0

. 그것들을 채우는 것은 당신의 앱 논리에 달려 있습니다.

나중에 컨트롤러

public virtual ContentResult LoadTreeData() 
{ 
    var treeData = Repository.GetTreeData(); 
    return Content(JsonConvert.SerializeObject(treeData), "application/json"); 
} 

희망이

을하는 데 도움이