2015-12-03 21 views
1

經過一番鬥爭,我設法將我的模型綁定到我的MVC應用中的Kendo網格。我現在想要做的是在每行的末尾添加一個Html.ActionLink或一個按鈕,以便在單擊它時打開一個新的瀏覽器窗口,其中包含選定人員的詳細信息頁面。添加視圖或按鈕鏈接到Kendo Grid

我的網格代碼是這樣的:

@ModelType CDB.GridDetail 
@Code 

Dim myGridData As IQueryable(Of Person) = Model.GridDetailPersons 

    Html.Kendo().Grid(Of Person)(myGridData) _ 
.Name("Grid") _ 
.Columns(Sub(c) 
      c.Bound(Function(s) s.PersonID) 
      c.Bound(Function(s) s.Status) 
      c.Bound(Function(s) s.OperationsTeam) 
      c.Template(Sub() 
          Html.ActionLink("View", "Details", New With {.id = "PersonID"}, New With {.target = "_blank"}) 
         End Sub).Title("View").ClientTemplate("client template") 
     End Sub) _ 
         .Scrollable() _ 
         .Render() 
End Code 

我遇到的問題是,我無法找到綁定,將personId該行到ActionLink的的.ID的方式。我試過Person.PersonID和myGridData.PersonID

代碼,因爲它呈現的網格和數據,但沒有鏈接......列是空的。

任何幫助表示讚賞。

回答

0

嘗試理查德的答案,但這並沒有工作......返回的語法錯誤。

後,他提供的鏈接,並尋找一些我發現這裏面沒有工作的其他文檔的...

c.Bound(Function(p) p.PersonID).Template(Function(t) @<text>@Html.ActionLink("View", "Details", New With {.id = t.PersonID}, New With {.target = "_blank"})</text> 
      End Function).Title("View Details").HtmlAttributes(New With {.style = "text-align:center;"}) 

我用它來代替c.Template(子.....行

+0

我已經意識到我的方法沒有工作:我習慣於使用'ClientTemplate'(直接定義JS模板)而不是'Template'(需要Razor標記並將其轉換爲JS模板)。 – Richard

+0

@Richard沒問題... kendo的東西很棒,但在用剃刀vb語法使用時沒什麼幫助,我試過所有的c#vb(甚至是telerik)轉換器,它們都是沒有幫助。你沒有遇到你鏈接的文件,所以你的確有幫助。謝謝 – Mych

1

列模板是一個模板,它使用Kendo的JS模板語言處理,然後用於每個顯示的行。 IE瀏覽器。您需要編寫代碼編寫Kendo JS模板,而不是用於創建瀏覽器將呈現的內容。

在這種情況下,因爲Html.ActionLink doen't驗證路由參數是把模板放到id參數:

Html.ActionLink("View", "Details", New With {.id = "#:PersonId#"}, New With {.target = "_blank"} 

見劍道的模板online