排序和搜索数据表

本文关键字:数据表 搜索 排序 | 更新日期: 2023-09-27 18:02:32

我有一个数据表,已绑定到Gridview后面的代码。这意味着我将不得不对代码中的列进行排序,当搜索记录时,我认为这也将在代码中完成。

我必须排序gridview的代码是

Private Function GetCustData As Datatable
Dim dt as new datatable
dt = GetDataFromBusinessLayer(CustomerID)
Return dt
End Function

和排序

的代码
Private Sub gv_Sorting(sender As Object, e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles gv.Sorting
    If e.SortExpression = "Name" 
        gv.DataSource = GetCustData '.DefaultView.Sort = "Name" & "DESC"
        gv.DataBind()
    End If
End Sub

你可以告诉我,我尝试使用。defaultview。Sort = "Name" &"DESC",但这不起作用,得到错误数据源是一个无效的类型。它必须是IListSource、IEnumerable或IDataSource。搜索周围的大多数使用Viewstate,但这似乎不适用在我的情况下。

谁能告诉我如何排序一个/多个列?

此外,我想有一个文本框,将搜索名称列。我认为以上应该足够了,但如果没有,有人能把我放在正确的轨道上,这样我就可以朝着那个方向努力,而不是在以后的阶段改变我正在做的事情吗?

排序和搜索数据表

首先,您当前的代码没有空格。要按名称DESC排序,您的排序字符串需要是:"名称DESC"。

要将Sort字符串设置为多列,只需在每列之间添加逗号,如下所示:

Dim dt as new datatable = GetCustData(1)
dt.DefaultView.Sort = "Name DESC, FirstName ASC"
gv.DataSource = dt.DefaultView
gv.DataBind()

我认为你可以创建一个行列表

List<DataRow> list = dt.AsEnumerable().ToList();

然后当你有一个列表时你可以使用sort

list.OrederBy(c=>c.///specific value in your list)

使用Linq为您排序怎么样?

Dim dt as new datatable
dt = From dr as Datarow in GetDataFromBusinessLayer(CustomerID)
     Order by dr.item("First Sort field), dr.Item("Second Sort Field")
     Select dr
Return dt

…我是在没有IDE的情况下这样做的,但我相信这应该可以做到。

下面是一个在线示例-使用Linq

排序数据表