2010-04-21 5 views
0

Je suis en train de modifier la question maintenant!Fonction de recherche sur listview

J'ai la recherche de travail en utilisant les suivantes:

//check the array for a match 
     foreach (Delivery d in mainForm.myDeliveries) 
     { 
      if (d.DeliveryName == searchValue) 
      { 
       ListViewItem item = lstDeliveryDetails.Items.Add(d.DeliveryName); 
       item.SubItems.Add(d.DeliveryAddress); 
       item.SubItems.Add(d.DeliveryDay); 
       item.SubItems.Add(d.DeliveryTime); 
       item.SubItems.Add(d.DeliveryMeal); 
       item.SubItems.Add(d.DeliveryInstructions); 
       item.SubItems.Add(d.DeliveryStatus); 

      } 
     } 

Ma question est, quelle est la meilleure façon de rechercher maintenant toutes les autres valeurs, d'effectuer une recherche complète? Je sais que je pourrais faire sinon d'autres déclarations et passer par l'adresse, le jour, l'heure, etc

Y at-il une meilleure façon d'y parvenir? Et pour l'instant, l'utilisateur doit entrer le nom entier pour obtenir le résultat, puis-je le faire s'il ne saisit qu'une partie du nom?

Répondre

0

Effacer tous les articles de votre point de vue de la liste et ajouter que ceux qui correspondent aux critères de recherche:

lstDeliveryDetails.Clear(); 
for (int i = 0; i < myDeliveries.Count; i++) 
{ 
    Delivery d = (Delivery)mainForm.myDeliveries[i]; 

    if (d.DeliveryName == searchValue) 
     lstDeliveryDetails.Items.Add(d.DeliveryName); 
} 
+0

Le nom 'article' n'existe pas dans le contexte actuel – sark9012

+0

@Luke le modifier en lstDeliveryDetails.Items.Add (d.DeliveryName); De même, vous devez également ajouter vos sous-éléments. – Amsakanna

+0

Haha, j'ai réalisé l'erreur de mes manières et j'ai vu ce que tu as écrit aussi! Pour une raison quelconque, il ne retourne rien dans la listview :( – sark9012

0

Changer votre méthode d'affichage de telle sorte qu'il accepte un argument de liste de livraison (ou tableau) comme celui-ci

private void displayDeliveries(List<Delivery> deliveries) 

et modifier en conséquence sa définition

dans votre btnSearch obtenir la liste des livraisons sélectionnées dans la liste et passer dans la méthode displayDeliveries

Alors que initialisant votre listView envoyer mainForm.myDeliveries comme argument

Mise à jour

Obtenez le mot-clé de l'utilisateur et vérifier que cette

if (d.DeliveryName.Contains(searchValue)) 

Vous pouvez également essayer la recherche incrémentale par gérer l'événement TextChanged de textbox si la liste est petite.