0

MVC4 と C# を使用しています。KendoUI Treeview があり、RavenDB からのデータを入力したいと考えています。

デモでは、これを使用します。

public JsonResult Employees(int? id)
    {
        var dataContext = new NorthwindDataContext();

        var employees = from e in dataContext.Employees
                        where (id.HasValue ? e.ReportsTo == id : e.ReportsTo == null)
                        select new {
                            id = e.EmployeeID,
                            Name = e.FirstName + " " + e.LastName,
                            hasChildren = e.Employees.Any()
                        };

        return Json(employees, JsonRequestBehavior.AllowGet);
}

引数「id」に注意してください。これは int です。RavenDb では、ドキュメント ID は文字列です。myDco/231...

これが標準的なドキュメントだと想像してください:

{
  "CreationDate": "12/12/2012 8:07:59 PM",
  "Name": "jkljklk",
  "Type": "kljkljkljkljkl",
  "Description": "ljkljklj",
  "CreatedByUser": "ljklklkljklj",
  "Deleted": false,
  "Status": "NEW",
  "Parent": "product/546"
}

ツリービューをどのように設定しますか?

4

2 に答える 2

1

私はこれを理解しました。

すべての子のリストを含めるように RavenDB ドキュメントを変更しました。

{
  "CreationDate": "12/12/2012 9:33:34 PM",
  "Name": "hohoho",
  "Type": "hohohoh",
  "Description": "hohohoh",
  "CreatedByUser": "hohohoh",
  "Deleted": false,
  "Status": "NEW",
  "Parent": "ohohohoh",
  "Children": [
  "item/1",
  "item/2",
  "item/3"
  ]
}

次に、コントローラーを介してアイテムのリストをビューに返し、それらを反復処理して、すべての子を正しい親ノードに追加します。

@(Html.Kendo().TreeView().Name("TreeView").DragAndDrop(true)
.Items(treeview =>
           {
               foreach (var myItem in Model)
               {
                   var myItemName = myItem.Name;
                   var children = myItem.Children;
                   treeview.Add().Text(myItemName ).Expanded(false).Items(branch =>
                                                                             {
                                                                                  if (children != null)
                                                                                     {
                                                                                         foreach (var child in children)
                                                                                         {
                                                                                             branch.Add().Text(child);
                                                                                         }
                                                                                     }
                                                                             });
               }
           }
   ))

とにかく、応答をありがとう:)

これがいつか他の誰かに役立つことを願っています。

于 2012-12-14T13:53:21.433 に答える
1

その int の代わりに string を使用しても問題はないはずです。Action メソッドに渡された文字列パラメーターに応じて、必要なレコードをフェッチするだけです。

于 2012-12-12T21:01:30.737 に答える