2011-12-14 18 views
0

MVC 3、jQuery、jquery.treeview.js、およびjquery.treeview.async.jsを使用して、非同期的にツリービューを読み込んで作成します。 PartTypesがトップレベルであり、次にPartが第2レベルである2レベルのツリービューです。私は、次のTreeViewNodeクラスを有するMVC 3で複数レベルの読み込みを行う非同期JQuery TreeViewが動作しない

public class TreeViewNode 
{ 
    public TreeViewNode[] children { get; set; } 

    public string classes { get; set; } 

    public bool expanded { get; set; } 

    public bool hasChildren { get; set; } 

    public string id { get; set; } 

    public string text { get; set; } 
} 

コントローラである

public ActionResult PartTypes(string root) 
    { 
     var nodes = new List<TreeViewNode>(); 

     if(root == "source") 
     { 
      var partTypes = ris.PartTypes.ToList().OrderBy(pt => pt.Name); 

      foreach (var partType in partTypes) 
      { 
       nodes.Add(new TreeViewNode { 
         text = partType.Name, 
         id = partType.Name, 
         hasChildren = true 
        }); 
      } 
     } 
     else 
     { 
      var parts = ris.Parts.Where(p => p.PartType.Name == root).ToList(); 
      foreach (var part in parts) 
      { 
       nodes.Add(new TreeViewNode { 
         text = part.SerialNumber, 
         id = part.SerialNumber 
        }); 
      } 
     } 
     return Json(nodes); 
    } 

ローディングのためのjQueryコードは

$(document).ready(function() { 
$("#navigation").treeview({ 
    url: '/Parts/Part/PartTypes/', 
    ajax: { 
     type: 'post' 
    } 
    }); 
} 
); 

あり、HTMLは単に

<ul id="navigation" class="treeview"/> 

場合でありますページはすべてのPをロードしますアートタイプはロードされ、ロードされます。個々のパーツタイプのリンクをクリックしても部品はロードされません。折りたたみをロードする部品の種類を取得し、部品の種類の1つを展開するときに部品名をロードするにはどうすればよいですか。

答えて

0

正しいjavascriptを使用しているかどうかはわかりません。

jqueryの - ツリービュー - 非同期-0.1.0.jsとjQuery-ツリービュー-1.4.0.min.js

これが問題になる可能性があるため、あなたは、これをチェックしてもらえますか?

+0

私はそれがより良いドキュメントを持っていたし、私はそれが動作するように得ることができるようjstreeと一緒に行くことになりました。 – PlTaylor

0

はコントローラーの上部に[HtppPost]追加しよう

[HtppPost] 

公共のActionResultのPartTypes(文字列ルート)

+0

これは非常にうまく答えられるかもしれませんが、より良い文書化のためにライブラリを切り替えることにしたので、実際に答えをテストして正しいとマークすることはできません。 – PlTaylor

関連する問題