Kendo UI Grid MVC无法渲染

时间:2014-06-13 06:27:43

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

我最近开始将Kendo UI整合到我的项目中。我有一个强类型视图,并希望将Kendo网格绑定到视图上的相应视图模型:

@ModelType IEnumerable(Of IMS_2.Models.expenseclaims)
@Code
ViewData("Title") = "Index"
End Code

<h2>Index</h2>

    <div>
    @code
        Html.Kendo().Grid(Model).Name("ExpenseClaims") _
         .Columns(Sub(c)
                          c.Bound(Function(x) x.ClaimDate).Width(140)
                          c.Bound(Function(x) x.Title).Width(190)
                          c.Bound(Function(x) x.Company)
                  End Sub)
    end code
</div>

代码在服务器上执行时没有异常,客户端没有javascript错误。对渲染源的检查没有提到网格:

<h2>Index</h2>

<div>          
</div>
        <hr />
        <footer>

...等

我的代码(我认为)是我在c#中看到的其他示例的直接翻译(参见http://telerikhelper.net/2012/10/26/using-kendo-grid-in-asp-net-mvc-4-0/

Expenseclaims由EF模板生成,定义为:

 Partial Public Class expenseclaims
        Public Property id As Long
        Public Property Title As String
        Public Property ClaimDate As Nullable(Of Date)
        Public Property Creator As Nullable(Of Long)
        Public Property Company As Long
        Public Property AdvanceOffset As Nullable(Of Decimal)   
        Public Overridable Property expenselines As ICollection(Of expenselines) = New HashSet(Of expenselines)
        Public Overridable Property companies As companies 
    End Class

控制器代码为:

 Public Class ExpenseController
        Inherits System.Web.Mvc.Controller

        Private db As New IMSEntities

        ' GET: /Expense/
        Function Index() As ActionResult
            Return View(db.expenseclaims.ToList())
        End Function

这是我难倒的地方......感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

编辑:你确实需要.tolist() 一个非常好的vb开始是在Telerik,至少那是我开始的地方 http://docs.telerik.com/kendo-ui/getting-started/using-kendo-with/aspnet-mvc/vb 我做了一点不同,但这应该得到相同的结果。我想可能问题是你要包装这是一个代码块,这与我读到的内容并不完全正确。这是我为跟踪网格做的一个例子。 我有数据源的地方(因为我使用的是ajax源,你想使用模型),你可以放下以下内容:

  .DataSource(dataSource => dataSource        
            .Ajax()
            .PageSize(20)
            .ServerOperation(false)        
         )

最重要的是,您似乎缺少数据源,我不确定代码块是否诚实,但我不这样做。

 @(Html.Kendo().Grid(Of TrackingGroupModel)().Name("grid") _
        .Columns(Function(col)
                     col.Bound(Function(e) e.TrackingNumber).ClientTemplate("<a href='#=ShippingCompanyUrl##=TrackingNumber#' target='_blank'>#=TrackingNumber#</a>")
                     col.Bound(Function(e) e.DateAdded).Format("{0:D}")
                     col.Bound(Function(e) e.ProductCount).Title("Total Shipped")
                     col.Command(Function(command) command.[Custom]("View Details").Click("showDetails"))
                 End Function)
.DataSource(Function(ds) ds.Ajax().Read(Function(read) read.Action("getTracking", "OrderManagement", New With {.id = Model.Id})))
        )