Kendo Grid - 详细信息模板 - DataSource Read未触发控制器操作

时间:2016-09-09 08:39:44

标签: asp.net-mvc kendo-ui kendo-grid kendo-asp.net-mvc kendo-template

应用类型:带有Kendo框架的ASP.NET MVC

遇到的问题:详细信息模板未触发控制器操作方法。请同时找到附带的屏幕截图。我也在firebug窗口下检查了它,没有对控制器动作方法“PublishedImportFiles_Read”的ajax调用。这让我发疯,烦人。此异常不会引发或显示错误。我想我错过了很小的东西。

请帮忙。

enter image description here

MVC - 查看代码

 <div class="gapLeft gapBelow20" style="width:70%;">
    @(Html.Kendo().Grid<ViewModels.PublishedImportViewModel>()
                    .Name("GridImport")
                    .Columns(columns =>
                    {
                        columns.Bound(p => p.TemplateGroup).Title("Template Group").Width("120px");
                        columns.Bound(p => p.TaxYear).Title("Tax Year").Width("70px");
                        columns.Bound(p => p.FileDescription).Title("Description").Width("200px");
                        columns.Bound(p => p.DatePublished).Title("Published Date").Format("{0:MM/dd/yyyy}").Width("100px");
                        columns.Bound(p => p.PublishedBy).Title("Published By").Width("100px");

                    })
                       .Scrollable()
                       .ClientDetailTemplateId("tplGridImport")
                       .Events(et => et.DataBound(fnCall.Replace("functionName", "gridImpDataBound")))
                       .Events(et => et.DetailInit(fnCall.Replace("functionName", "gridImpChildInit")))
                       .HtmlAttributes(new { style = "height:300px;" })                           
                       .DataSource(ds => ds.Ajax().ServerOperation(false)
                               .Read(read => { read.Action("PublishedImport_Read", "Import"); })
                               .Model(m => { m.Id(p => p.TemplateGroupID); })
                               )
                  )
</div>

<script id="tplGridImport" type="text/kendo-tmpl">
    @(Html.Kendo().Grid<ViewModels.PublishedImportViewModel>()
         .Name("GridImport_#=TemplateGroupID#")
        .Columns(columns =>
        {
            columns.Bound(c => c.TemplateGroup).Title("Template Group").Width("120px");
            columns.Bound(c => c.TaxYear).Title("Tax Year").Width("70px");
        })
        .DataSource(dsx => dsx.Ajax()
                            .Read(rd => { rd.Action("PublishedImportFiles_Read", "Import"); })
                         )
        .ToClientTemplate()
    )
</script>

导入控制器ActionResult方法:

 [OutputCache(Duration = 0)]
    public ActionResult PublishedImportFiles_Read([DataSourceRequest] DataSourceRequest request)
    {
        int groupID = 5;
        IEnumerable<PublishedImportViewModel> pubVM = Enumerable.Empty<PublishedImportViewModel>();
        var pubRecords = base.ScenarioMangtService.GetPublishedImportFilesByTemplateGroup(ClientID, SelectedYear, groupID);

        pubVM = pubRecords.Select(s => new PublishedImportViewModel
                                                    {
                                                        ImportFileJobID = s.ImportFileJobID,
                                                        TemplateGroupID = s.TemplateGroupID,
                                                        TemplateGroup = s.TemplateGroup,
                                                        FileName = s.FileName,
                                                        FileDescription = s.FileDescription,
                                                        TaxYear = SelectedYear,
                                                        DatePublished = s.DatePublished,
                                                        PublishedBy = s.PublishedBy
                                                    });

        return Json(pubVM.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);

    } 

1 个答案:

答案 0 :(得分:0)

KendoGrid代码没有任何问题。奇怪的是,另一个js文件中有一个javascript错误。而出于一些奇怪的原因,它打破了细节模板网格的绑定。

因此,当我评论另一个文件中的其他损坏代码时,此网格会自动开始工作。