使用DataTable数据源搜索GridView

3
我有一个网格视图,它从web服务获取数据。这些数据以数据集的形式进入应用程序。
   Me.GvStreets.DataSource = TheWebServiceSearch.AddressDataTable
   Me.GvStreets.DataBind()

在网格视图中,我该如何搜索这个数据集的内容?

我是否需要将其添加到某种数据源控件(如XML数据源)中?

谢谢。

最终我做的是这样的...

  Dim StreetDataTable As DataTable = Session("StreetData")
   Dim Name As String = StreetDataTable.Columns(0).ColumnName

   Dim FilteredResults As New DataTable
   FilteredResults = StreetDataTable.Clone()

   Dim DataRows() As DataRow
   DataRows = StreetDataTable.Select("street LIKE '%" & Me.txtStreet.Text & _


                         "%'", "Street ASC")
    Dim i As Integer

    For i = 0 To DataRows.GetUpperBound(0)

        FilteredResults.ImportRow(DataRows(i))

    Next i

    Me.GvStreets.DataSource = FilteredResults
    Me.GvStreets.DataBind()

我需要获取结果并克隆数据表以获取模式。然后从原始数据表中进行选择操作。我循环遍历结果并将它们添加到克隆的数据表中。

1个回答

5

通常情况下,您可以直接搜索数据源,因此在您的情况下,由于TheWebServiceSearch.AddressDataTable是一个DataTable,您可以执行以下操作:

DataTable data = TheWebServiceSearch.AddressDataTable;
DataRow[] foundRows = data.Select("city = 'NY'", "zip ASC");

你可以在这里查看完整的DataTable.Select重载列表。此处

哦,好的,现在我明白你需要什么了。我以为你想要其他的东西。无论如何,为了你的目的,你应该使用DataView对象(也是可绑定的)。这里有一个例子:

Dim StreetDataTable As DataTable = Session("StreetData")
Dim Name As String = StreetDataTable.Columns(0).ColumnName
StreetDataTable.DefaultView.RowFilter = "street LIKE '%" & Me.txtStreet.Text & "%'"
StreetDataTable.DefaultView.Sort = "Street ASC"

Me.GvStreets.DataSource = StreetDataTable.DefaultView
Me.GvStreets.DataBind()

请查看DataView的完整规范


如果我要在多个列上搜索并需要通配符,这是否可行? - Paul
1
@Paul - 请查看此页面,了解有关Select()表达式参数的详细说明:http://msdn.microsoft.com/zh-cn/library/system.data.datacolumn.expression.aspx - Zachary Yates

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接