MVC 4 - Kendo Grid数据绑定

Joh*_*rik 3 c# razor asp.net-mvc-4 kendo-grid

以下是我项目的所有内容:

ControllerA

public ActionResult Index()
{
    return View();
}

public ActionResult User_Read()
{
    ViewModels.ViewModelA objView = new ViewModels.ViewModelA();

        objView.MyList = new List<ViewModels.SomeClass>();
        objView.MyList.Add(new ViewModels.SomeClass() { FirstName = "FN1", Supervisor = "SV1" });
        objView.MyList.Add(new ViewModels.SomeClass() { FirstName = "FN2", Supervisor = "SV2" });

        return Json(objView, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

ViewModelA

public class ViewModelA
{
    public List<SomeClass> MyList { get; set; }
}

public class SomeClass
{
    public string FirstName { get; set; }
    public string Supervisor { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Index.cshtml

@using Kendo.Mvc.UI

@(Html.Kendo().Grid<Solution1.ViewModels.ViewModelA>()
    .Name("grid")
    .Columns(columns =>
        {
            columns.Bound(c => c.FirstName);
            columns.Bound(c => c.Supervisor);
        })
        .HtmlAttributes(new { style = "height: 380px" })
        .DataSource(dataSource => dataSource
            .Ajax()
            .Read(read => read.Action("User_Read", "ControllerA"))
        )
)
Run Code Online (Sandbox Code Playgroud)

详细信息:当我运行此页面时,页面加载正常且没有错误,但是,页面上没有填充任何数据.因此,网格存在,但它只显示FirstName和Supervisor的列名.我知道你不应该对数据进行硬编码,但我现在只想在网格上显示一些内容,我希望数据来自Controller.

问题:为了在网格上显示数据,我需要更改什么?此外,根据Controller中的数据,如何向网格添加多行?

更新:我最初提出的问题已部分解决.仍需要帮助才能将数据显示到网格中.

Mik*_*ond 5

要使代码工作,您需要做两件事.

  1. 您需要返回一个列表(或实际上支持IEnumerable接口的任何内容).

  2. 您需要通过调用ToDataSourceResult来格式化返回数据.

于是

    public ActionResult User_Read([DataSourceRequest]DataSourceRequest request)
    {
        var model = new List<ViewModelA>()
        {
            new ViewModelA()
            {
                FirstName = "Name",
                Supervisor = "Mgr",
            },
            new ViewModelA()
            {
                FirstName = "FirstName",
                Supervisor = "Supervisor",
            },
        };

        return Json(model.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
    }
Run Code Online (Sandbox Code Playgroud)

在编辑之前,其他所有内容都与原始示例中的完全相同.

查看Kendo演示解决方案并研究示例.它不是最好的布局演示,有时您需要深入挖掘源代码以确切了解发生了什么,而不仅仅是依赖于演示似乎意味着您需要的内容.例如,在通过Ajax演示填充网格演示中,由Ajax调用并返回数据的实际操作方法未在演示中显示!