0

拡張可能な行が機能するこの基本的な剣道UIを取得しようとしています:

<div id="grid"></div>

<script type="text/javascript">
    $(function () {
        $("#grid").kendoGrid({
            columns: [
            {
                field: "ProductId",
                title: "ProductId"
            }
        ],
            dataSource: {
                type: "json",
                transport: {
                    read: '@Url.Action("GetData1", "MockForms")'
                }
            },
            height: 450,
            sortable: true,
            pageable: true,
            detailTemplate: "<h2 style='background-color: yellow;'>Expanded!</h2>",
            detailExpand: function (e) {
                this.collapseRow(this.tbody.find(' > tr.k-master-row').not(e.masterRow));
            }
        });
    });  
</script>

json は次のように生成されます。

public ActionResult GetData1([DataSourceRequest] DataSourceRequest request)
        {
            var list = new List<Product>
                {
                    new Product {ProductId = 1, ProductType = "SomeType 1", Name = "Name 1", Created = DateTime.UtcNow},
                    new Product {ProductId = 1, ProductType = "SomeType 2", Name = "Name 2", Created = DateTime.UtcNow},
                    new Product {ProductId = 1, ProductType = "SomeType 3", Name = "Name 3", Created = DateTime.UtcNow}
                };

            return Json(list.AsQueryable().ToDataSourceResult(request));
        }

送信OKのようです(firebugによると)。ただし、何もバインドされていません (javascript エラーはありません)。何か案は?

PS:

OnaBai の 2 番目のコメントは、これを機能させるのに役立ちました。私が変更され:

return Json(list.AsQueryable().ToDataSourceResult(request));
=>
return Json(list);

これにより、次の JSON が生成されます。

[{"ProductId":1,"ProductType":"SomeType 1","Name":"Name 1","Created":"\/Date(1371022051570)\/"},{"ProductId":1,"ProductType":"SomeType 2","Name":"Name 2","Created":"\/Date(1371022051570)\/"},{"ProductId":1,"ProductType":"SomeType 3","Name":"Name 3","Created":"\/Date(1371022051570)\/"}]

それでも私は使いたい:

return Json(list.AsQueryable().ToDataSourceResult(request));

これにより、最終的にページングとソートが容易になります。現在、以下を生成しています。

{"Data":[{"ProductId":1,"ProductType":"SomeType 1","Name":"Name 1","Created":"\/Date(1371022186643)\/"},{"ProductId":1,"ProductType":"SomeType 2","Name":"Name 2","Created":"\/Date(1371022186648)\/"},{"ProductId":1,"ProductType":"SomeType 3","Name":"Name 3","Created":"\/Date(1371022186648)\/"}],"Total":3,"AggregateResults":null,"Errors":null}

私は使用しようとしました:

field: "Data.ProductId",

それ以外の:

field: "ProductId",

役に立たないJavaScriptコードで。

4

1 に答える 1

1

ToDataSourceResult を使用する場合は、ASP.NET MVC ラッパーを使用する必要があります。詳細については、ドキュメントを参照してください: http ://docs.kendoui.c​​om/getting-started/using-kendo-with/aspnet-mvc/helpers/grid/ajax-binding

于 2013-06-12T19:00:22.450 に答える