1

我正在尝试从 json 绑定数据。在控制器中,我正在发送

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

在调试中,我得到 jn 中的值(47 个项目,每个项目有两个条目(文本和值)。

在视图中,我正在使用以下脚本:

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

实际上,您发送的属性应该被称为ValueandText而不是valueand 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 回答