1

現在、Kendo UI Treeviewドキュメントの「リモートデータ」の例のコピーを使用しています...ただし、子ノードの読み込みに問題があるようです。

意見:

<div class="treeview">
    @(Html.Kendo().TreeView()
        .Name("treeview")
        .DataTextField("Name")
        .DataSource(dataSource => dataSource
            .Read(read => read
                .Action("Pages", "Page", new { Area = "Admin" })
            )
        )
    )
</div>

方法:

public JsonResult Pages(int? id)
{
    var pages = _page.Items;

    if(id.HasValue)
    {
        pages = pages.Where(u => u.Parent.Id == id);
    }
    else
    {
        pages = pages.Where(u => u.Parent == null);
    }


    var pagesToReturn = from p in pages
                        select new {
                            id = p.Id,
                            text = p.Title,
                            hasChildren = p.Children.Any()
                        };

    return Json(pagesToReturn, JsonRequestBehavior.AllowGet);
}

ただし、何らかの理由で、クリックしてノードを展開しても、実際には何も実行されないようです。Firefoxの[ネット]タブを使用してデータ転送を確認すると、実際にはメソッドに移動し、子ノードの正しいJSONが返されることがわかりますが、実際にはツリービューに何も追加されていません。

デバッグに関して何を試すべきかよくわかりません。本当に困惑しています。任意のヘルプ/指示をいただければ幸いです。

4

2 に答える 2

1

展開ボタンをクリックすると、読み込み中のアニメーションが表示されますか?

ちなみに、DataTextFieldで「Name」を使用しましたが、jSonでわかるように、定義されていません。それはあなたに「未定義の」ノードを与えるでしょう。「テキスト」に置き換えてみてください。

.DataTextField("text")
于 2013-02-21T03:17:44.673 に答える
0

私も同様の問題を抱えていました。私の場合、DataTextField宣言を削除し、テンプレートを定義すると、この問題が修正されました。

@(Html.Kendo().TreeView().Name("tvNodes")
          .DataSource(ds =>  ds.Read(read => read.Action("ReadLeafTreeNodes", "Classifications")))
          .Template("#=item.Text#")              

更新:これはランダムな問題のようで、私が提案した修正は常に機能しているわけではありません。ページを更新した後、機能する場合と機能しない場合があります。

于 2013-02-04T22:22:12.767 に答える