2010-12-14 9 views
1

誰かが、Excelを解析して作成したデータセットをMVCContribのグリッドを使用してMVC2ウェブサイトに表示する方法について提案はありますか?MVCContribのグリッドを使用してダイナミックデータセットを表示

私のアプリでは、スプレッドシートをアップロードしてレビューし、エラーがなければデータをインポートできます。

各スプレッドシートは、必要な約30個の列と、サーバー上で定義され、スプレッドシート内に存在していてもいなくてもよいいくつかのクライアント固有のフィールドで構成されています。列名は一致し、あらかじめ決められています。

スプレッドシートの各列をデータベースの適切なフィールドと照合して、結果をプレビューするユーザーに提示する必要があります。

表示するグリッドを生成する方法に関するアイデアは高く評価されます。

答えて

0

カスタムGridModelを作成することで可能です。 ここでは、IDistariesでいっぱいになった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"))) 
関連する問題