사용자 지정 GridModel을 만들면 가능합니다. 여기에 ID 표를 채운 IList에서 그리드를 기반으로하지만 DataTable에서 가져온 데이터로도 가능해야합니다. 트릭은 데이터 구조를 사용자 정의 GridModel의 생성자에 제공하고 사용자 정의 GridModel이 데이터 구조를 기반으로하는 열을 생성하도록하는 것입니다. 조금 추한 있지만 잘 작동합니다. (그리고 그것은 재미 람다 식 VB.NET 심지어 못 생겼다고이다)
컨트롤러 액션 코드 :
Dim list As IList(Of IDictionary(Of String, String)) = New List(Of IDictionary(Of String, String))
Dim row1 As IDictionary(Of String, String) = New Dictionary(Of String, String)()
row1.Add("Column1", "ValueColumn1Row1")
row1.Add("Column2", "ValueColumn2Row1")
Dim row2 As IDictionary(Of String, String) = New Dictionary(Of String, String)()
row2.Add("Column1", "ValueColumn1Row2")
row2.Add("Column2", "ValueColumn2Row2")
list.Add(row1)
list.Add(row2)
ViewData("DynamicData") = list
맞춤 GridModel :
Public Class DynamicGridModel
Inherits MvcContrib.UI.Grid.GridModel(Of IDictionary(Of String, String))
Public Sub New(ByVal dataToRender As IList(Of IDictionary(Of String, String)))
If dataToRender.Count > 0 Then
For Each name As String In dataToRender(0).Keys
Dim columnName As String = name
Column.For(Function(rowData As IDictionary(Of String, String)) rowData(columnName)).Named(columnName)
Next
End If
End Sub
End Class
뷰 구문 :
Html.Grid(Of IDictionary(Of String, String))("DynamicData").WithModel(New DynamicGridModel(ViewData("DynamicData")))