首页 > 解决方案 > 使用对象声明数据视图

问题描述

我在以前的代码中有一个对象,它绑定在数据网格上。现在我需要添加对列进行排序。我在网上搜索以从数据源转换数据表。但我得到一个错误“必须在使用 DataView 之前设置 DataTable。” 有人告诉我该怎么做吗?提前致谢。

有绑定数据网格的代码:

Dim thisOrder as New co.Orders(123)
dgrdOrders.DataSource=thisOrder
dgrdOrders.DataBind()

有我的代码:

Private Sub dgrdOrders_SortCommand(source As Object, e As DataGridSortCommandEventArgs) Handles dgrdOrders.SortCommand        

    Dim dataTable As DataTable = TryCast(dgrdOrders.DataSource, DataTable)
    Dim dv As New DataView(dataTable)
    dv.Sort = e.SortExpression
    dgrdOrders.DataSource = dv
    dgrdOrders.DataBind()
End Sub

标签: asp.netvb.net

解决方案


最后我找到了排序的方法:

  Private Sub dgrdOrders_SortCommand(source As Object, e As DataGridSortCommandEventArgs) Handles dgrdOrders.SortCommand

    Dim lstOrders As New List(Of co.Order)
      For Each objOrder As co.Order In thisOrder
        lstOrders.Add(objOrder)
      Next

    Select Case e.SortExpression
       Case "Type"
          lstOrders  = lstOrders.OrderBy(Function(x) x.Type).ToList
       Case "Region"
          lstOrders  = lstOrders.OrderBy(Function(x) x.Region).ToList
     End Select
     dgrdOrders.DataSource = lstOrders  
     dgrdOrders.DataBind()

   End Sub

推荐阅读