【问题标题】:Displaying a dynamic DataSet using MVCContrib's grid使用 MVCContrib 的网格显示动态数据集
【发布时间】:2010-12-14 19:05:14
【问题描述】:

对于如何获取通过解析 Excel 创建的 DataSet 并使用 MVCContrib 的网格将其显示在我的 MVC2 网站中,是否有人有任何建议?

我的应用程序允许人们上传电子表格、查看它们并在没有错误的情况下导入数据。

每个电子表格包含大约 30 个必填列和一些在服务器上定义的特定于客户端的字段,这些字段可能存在也可能不存在于电子表格中。列名将匹配并且是预先确定的。

我需要将电子表格中的每一列与数据库中的相应字段进行匹配,并将结果呈现给用户进行预览。

任何关于如何生成要显示的网格的想法都将不胜感激。

【问题讨论】:

    标签: asp.net-mvc-2 dataset mvccontrib


    【解决方案1】:

    可以通过创建自定义 GridModel。 在这里,我将我的网格基于一个填充了 IDictionaries 的 IList,但这对于从 DataTable 获取的数据也应该是可能的。 诀窍是将数据结构交给自定义GridModel的构造函数,让自定义GridModel根据数据结构生成列。 它有点难看,但效果很好。 (在 VB.NET 中使用有趣的 lambda 表达式更难看)

    控制器动作代码:

    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")))
    

    【讨论】:

      猜你喜欢
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 2018-07-09
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多