Sorry, there are no translations available at the moment.

Requêtes

Description

Dans ce tutoriel, nous allons améliorer l'interface usager de l'application en ajoutant la possibilité de faire une recherche de produit.

Solution de départ

La solution de départ est disponible ici

Démonstration

http://tjtechno.com/demo/query/

Solution finale

Disponible ici

Exercices

Formulaire de clients

  • Créer le formulaire "CustomerForm.cs". Le formulaire doit avoir les mêmes fonctionnalités que le formulaire de produits :
    • Doit avoir une grille avec tous les clients
    • Doit avoir un formulaire avec tous les champs du client courant
    • Doit avoir un "Binding Navigator" pour se déplacer d'un client à l'autre
    • Doit avoir la fonction de recherche qui permet de filter la grille en fonction du nom du client
    • Doit permettre de supprimer un client et d'ajouter un client à partir des boutons du "Binding Navigator" ET à partir de la grille (bien entendu, si l'usager tente de supprimer un client associé à une commande, un message doit l'aviser qu'il est impossible de faire suite à sa requête)
  • Ajouter l'item de menu qui permet d'ouvrir le formulaire "CustomerForm.cs" à partir du formulaire principal ("MainForm.cs")

Notes sur l'exercice

Fonction de création de l'objet "Customer"

 
      #region Create Method
 
      public static Customer Create(EntityManager manager, string companyName)
      {
          Customer anCustomer = manager.CreateEntity<Customer>();
          anCustomer.CompanyName = companyName;
          anCustomer.CustomerID = Guid.NewGuid();
          anCustomer.EntityAspect.AddToManager();
          return anCustomer;
      }
 
      public static Customer Create(EntityManager manager)
      {
          return Customer.Create(manager, "[COMPANY]");
      }
 
      #endregion Create Method
 

Requête avec OU (pour chercher dans plusieurs champs)

 
    private void LoadData(bool pRefresh)
        {
        var _searchKeyword = _filterTextBox.Text;
 
        IEntityQuery<Customer> query;
 
        if (string.IsNullOrEmpty(_searchKeyword))
        {
           query = _manager.Customers;
        }
        else
        {
            // a ?? b : if a is null, returns b, otherwise returns a
            query = _manager.Customers.Where(p => 
                (p.CompanyName ?? "").Contains(_searchKeyword)
                    ||
                (p.ContactName ?? "").Contains(_searchKeyword)
                    ||
                (p.ContactTitle ?? "").Contains(_searchKeyword)
                    ||
                (p.City ?? "").Contains(_searchKeyword)
                    ||
                (p.Country ?? "").Contains(_searchKeyword)
                    ||
                (p.Region ?? "").Contains(_searchKeyword)
                    ||
                (p.Phone ?? "").Contains(_searchKeyword)
                    ||
                (p.Fax ?? "").Contains(_searchKeyword)
                )
                ;
        }
 
        if (pRefresh)
        {
            query.QueryStrategy =
                new QueryStrategy
                  (FetchStrategy.DataSourceOnly,
                   MergeStrategy.PreserveChanges);
        }
        _customers.ReplaceRange(query);
 
    }
 

Solution finale - réponse à l'exercice

Disponible ici

Liens

GUID

http://fr.wikipedia.org/wiki/Globally_Unique_Identifier

Solution sans DevForce - Ado.Net Entity Framework seulement

Disponible ici