2009-05-27 3 views
3

J'ai un gridview qui obtient ses données d'un webservice.Recherche d'un Gridview avec une source de données DataTable

Ceci entre dans l'application dans un jeu de données.

Me.GvStreets.DataSource = TheWebServiceSearch.AddressDataTable 
    Me.GvStreets.DataBind() 

Une fois dans la vue de grille, comment puis-je rechercher le contenu de cet ensemble de données. Dois-je l'ajouter à une sorte de contrôle de source de données comme une source de données XML?

Merci

Ce que je fini par faire était ce ...

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

je devais obtenir les résultats et cloner la table de données pour obtenir le schéma. Ensuite, j'ai fait le choix de la datatable d'origine. J'ai bouclé les résultats et les ai ajoutés à la table de données clonée.

Répondre

5

Normalement, vous rechercher votre source de données directement, donc dans votre cas depuis TheWebServiceSearch.AddressDataTable est un DataTable, vous pouvez effectuer les opérations suivantes:

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

Vous pouvez consulter la liste complète des DataTable.Select surcharges


Oh d'accord, maintenant je vois ce dont vous avez besoin. Je pensais que tu voulais autre chose. Quoi qu'il en soit, vous devriez utiliser l'objet DataView (qui peut également être lié). Voici un exemple:

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

Jetez un oeil à complete specification of DataView.

+0

Et si je devais effectuer une recherche sur plusieurs colonnes et que j'avais besoin de jokers, est-ce possible? – Paul

+1

@Paul - consultez cette page pour une explication détaillée des arguments data.Select(): http://msdn.microsoft.com/fr-fr/library/system.data.datacolumn.expression.aspx –