1

json からデータをバインドしようとしています。コントローラーでは、送信しています

......
public JsonResult LoadTree()
........
return Json(jn, JsonRequestBehavior.AllowGet);

デバッグでは、jn で値を取得します (47 項目、それぞれに 2 つのエントリ (テキストと値) があります)。

ビューでは、次のスクリプトを使用しています。

function onDataBinding(e) {
    var url = 'CourseCases/LoadTree';
    var result;
    $.ajax({
        url: url,
        data: {},
        contentType: "application/json",
        success: function (data) {
            alert(data);
            var treeview = $("#TreeView").data("tTreeView");
            treeview.bindTo(data);
        }
    });
}

機能しません。アラートはオブジェクト、オブジェクトを示します。ツリービューは空白です!理由はありますか?前もって感謝します。

4

2 に答える 2

1

実際に送信するプロパティは、 and の代わりに and と呼ばれる必要ValueTextありvalueますtext。これは私にとってうまくいく例です。

コントローラ:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult LoadTree()
    {
        var jn = new[] 
        {
            new { Value = "1", Text = "Item 1" },
            new { Value = "2", Text = "Item 2" },
            new { Value = "3", Text = "Item 3" },
        };
        return Json(jn, JsonRequestBehavior.AllowGet);
    }
}

ビュー ( ~/Views/Home/Index.cshtml):

<script type="text/javascript">
    function onDataBinding(e) {
        var url = '@Url.Action("LoadTree")';
        var result;
        $.ajax({
            url: url,
            data: { },
            success: function (data) {
                var treeview = $("#TreeView").data("tTreeView");
                treeview.bindTo(data);
            }
        });
    }    
</script>

@(Html
    .Telerik()
    .TreeView()
    .Name("TreeView")
    .ClientEvents(events =>
    {
        events.OnDataBinding("onDataBinding");
    })
)
于 2012-05-22T15:36:16.000 に答える
0

おそらく、$.post のコールバック メソッドで直接 treeview.bindTo を呼び出す必要があります。現在のコードでは、コールバックで jn == コンテンツが保証される前に、ツリービューを jsonObject == jn にバインドする可能性があると思います。アラートを出すと、大きな遅延が追加され、AJAX ポストがコールバックを完了して実行するのに十分な時間が与えられます。

于 2012-05-21T22:10:35.177 に答える