【问题标题】:GridView sorting with Generic List in vb.netGridView 在 vb.net 中使用通用列表进行排序
【发布时间】:2013-11-30 23:12:13
【问题描述】:

我正在对绑定到通用列表的 gridview 进行自定义排序。

我的问题如下:

    If direction.ToLower.Contains("desc") Then
        mygv.DataSource = myList.OrderByDescending(Function(w) w.Name)
        GridViewSortDirection = SortDirection.Descending
    Else
        mygv.DataSource = myList.OrderBy(Function(w) w.Name)
        GridViewSortDirection = SortDirection.Ascending 
    End If

    mygv.DataBind()

如果w.Name 字段可能是名称、城市、国家或任何其他字段,我如何将其替换为为此函数提供的参数?

附:在 C# 中使用匿名类型很容易,但我在这里使用 vb.net。

谢谢

【问题讨论】:

  • PS VB.Net 也有匿名类型。但是,老实说,我看不出您如何使用它们。

标签: asp.net vb.net linq datagridview gridview-sorting


【解决方案1】:

在gridview的以下事件中添加这段代码:

Protected Sub Gridview_Sorting(ByVal sender As Object, ByVal e As GridViewSortEventArgs) Handles Gridview.Sorting
    myList = myList.OrderBy(Function(x) x.GetType().GetProperty(e.SortExpression).GetValue(x)).ToList()
End Sub 

这应该可以完成工作。

【讨论】:

    【解决方案2】:

    假设您尝试这样做是因为您使用的是 Linq to EF 或 Linq to SQL...

    Import System.Linq.Expressions
    
    Dim propertyName = "Name"
    If direction.ToLower.Contains("desc") Then
        mygv.DataSource = myList.OrderByDescending(PropertyOf(Of Row)(propertyName))
        GridViewSortDirection = SortDirection.Descending
    Else
        mygv.DataSource = myList.OrderBy(PropertyOf(Of Row)(propertyName))
        GridViewSortDirection = SortDirection.Ascending 
    End If
    
    mygv.DataBind()
    
    
    Public Function PropertyOf(Of T)(string propertyName) as Expression(Of Func(Of T, object))
        Dim param = Expression.Parameter("x", typeOf T)
        Dim property = Expression.PropertyOrField(param, propertyName);
        Return Expression.Lambda(property, param)
    End Function
    

    【讨论】:

    • ...我不知道您的 List(Of T) 是什么,所以我将其命名为 Row...用您的 List 类型替换 Row。想想看……你没有说myList 的类型是什么。这很重要:使用什么 Linq。
    猜你喜欢
    • 2016-11-18
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多