繁体   English   中英

Kendo Grid Ajax绑定未显示数据

[英]Kendo Grid Ajax Binding Not showing Data

我在Kendo网格中显示数据时遇到一些问题。 我的情况是这样的:我有一个网格,该网格应显示有关特定项目任务的信息。 只有与该项目相关的任务才应显示在网格上。 我正在使用ajax绑定从服务器获取数据。 但是,网格不显示任何数据。 我相当确定Read函数会返回正确的结果,并且我认为格式正确,但是显然我错了。 下面是我的代码。

这是我的模型定义:

Public Class TaskViewModel
    Public Property IdTasks As Integer

    Public Property Task As String
    Public Property AssignedToId As Nullable(Of Integer)
    Public Property StartDate As Nullable(Of Date)
    Public Property DueDate As Nullable(Of Date)

    Public Property usersAssignedTo As UserViewModel
    Public Property costChange As CostChangeViewModel
End Class

Public Class CostChangeViewModel
     Public Property Text as String
     Public Property Value as Integer
End Class

Public Class UserViewModel
     Public Property Text as String
     Public Property Value as Integer
End Class

从控制器读取动作

Function Tasks_Read(familyId As Integer) As JsonResult
        'get the customer family that is being viewed on the margin report
        Dim custFamily As CustomerFamilies = (From a In dbLMT.CustomerFamilies Where a.CustomerFamilyId = familyId).Single
        'get a list of tasks related to that customer family
        Dim lstTasks As IQueryable(Of Tasks) = getTaskList(custFamily)
        'create a queryable of the task view model and select only those properties
        Dim lstTaskViewModel As IQueryable(Of TaskViewModel) = (From a In lstTasks Select New TaskViewModel With {.IdTasks = a.IdTasks, .Task = a.Task, .AssignedToId = a.AssignedToId, .usersAssignedTo = New UserViewModel With {.Text = a.usersAssignedTo.FirstName & " " & a.usersAssignedTo.LastName, .Value = a.usersAssignedTo.IdUsers}, .StartDate = a.StartDate, .DueDate = a.DueDate, .costChange = New CostChangeViewModel With {.Text = a.costChange.CostChangeDesc, .Value = a.costChange.CostChangeProjectId}})

        Return Json(lstTaskViewModel, JsonRequestBehavior.AllowGet)
End Function

上面的函数似乎可以正常工作,并且lstTaskViewModel包含具有正确属性的正确任务。

我的网格代码如下所示:

@Html.Kendo.Grid(Of TaskViewModel).Name("gridTasks").Columns(Sub(col)
                                                                             col.Bound(Function(p) p.IdTasks).Title("Id")
                                                                             col.Bound(Function(p) p.costChange).Title("Cost Change Project").ClientTemplate("#=costChange.Text#").Width(200)
                                                                             col.Bound(Function(p) p.Task).Title("Task").Width(400)
                                                                             col.Bound(Function(p) p.StartDate).Title("Start Date").Width(100).Format("{0:MM/dd/yyyy}")
                                                                             col.Bound(Function(p) p.DueDate).Title("Due Date").Width(100).Format("{0:MM/dd/yyyy}")
                                                                             col.Bound(Function(p) p.usersAssignedTo).Title("Assigned To").ClientTemplate("#=usersAssignedTo.Text#").Width(100)
                                                                         End Sub).DataSource(Sub(ds)
                                                                                                     ds.Ajax().Read(Sub(rd)
                                                                                                                            rd.Action("Tasks_Read", "Reports").Data("getFamilyId")
                                                                                                                    End Sub).Model(Sub(model)
                                                                                                                                           model.Id(Function(p) p.IdTasks)
                                                                                                                                   End Sub)
                                                                                             End Sub).AutoBind(True)

. 使用上面的网格,我已经成功创建了新任务并显示了它们,但是我看不到从传递来的任务列表。 (我已经删除了所有未出于测试目的而读取数据的内容)

使用IE调试器,我得到了Tasks_Read返回到网格的JSON字符串:

[{"IdTasks":7027,"Task":"this is a test to ensure that creating a task and an issue is possible","AssignedToId":3151,"StartDate":"\/Date(1438056000000)\/","DueDate":"\/Date(1438228800000)\/","usersAssignedTo":{"Text":"Eric Hemphill","Value":3151},"costChange":{"Text":"Change Final Assy AT from 0.82 to 0.73","Value":125}}]

在我看来,JSON结果似乎适合网格中的模型,但是网格不显示任何数据。 我认为我已经阅读了所有存在类似问题的帖子,但到目前为止,都没有任何效果。

任何想法都欢迎。 谢谢您的帮助!

经过数小时的尝试,我弄清楚了。 在控制器的读取功能中,需要有一个传入的Kendo.mvc.ui.dataSourceRequest对象。该对象是从网格发送的。 然后,在返回Enumerable之前,需要将其转换为Kendo DataSourceResult,然后转换为JSON对象。 (我认为我对“对象”一词的使用是错误的,因此不要在其上写任何论文。)无论如何,控制器功能应如下所示:

Function Tasks_Read(dataRequest as Kendo.Mvc.UI.DataSourceRequest, other param) as JsonResult {
'get your list of tasks and store them in some sort of enumerable
dim lstTasks as IQueryable(of Tasks) = (Get your list)


'convert the enumerable to a dataSourceResult
dim dataResult as Kendo.Mvc.UI.DataSourceResult = lstTasks.ToDataSourceResult(dataRequest)

要使用ToDataSourceResult函数,您需要导入kendo.mvc.extensions命名空间。

这篇文章中的所有内容都在他们的文档中,所以这并不疯狂,我误解了他们的文档。 我希望这对以后的人有所帮助。 祝你好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM