Bonjour,
Je voudrais savoir comment il est possible de mettre à jour des valeur quand il s'agit de classes composées.
Par exemple j'ai une Commande qui est composée de lignes commandes.
Lors de la mise à jour de la quantité ou prix unitaire de la ligne j'aimerais que le total de ma commande se mette à jour.
Le montant de la commande étant un champ calculé qui est donné de cette façon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 private double? _Montant_HT = null; public double? Montant_HT { get { //if (!_Montant_HT.HasValue) //{ _Montant_HT = CommandeFournisseurLignes.Sum(CFL => (CFL.PrixUnitaire * CFL.Quantite)); //} return _Montant_HT.Value; } }
Ma classe commande Ligne :
Pour aller plus loin dans ma réflexion :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 public partial class CommandeFournisseurLigne : EntityObject { private double? _Total_HT = null; public double? Total_HT { get { _Total_HT = PrixUnitaire * Quantite; return _Total_HT.Value; } } partial void OnPrixUnitaireChanged() { base.OnPropertyChanged("Total_HT"); } partial void OnQuantiteChanged() { base.OnPropertyChanged("Total_HT"); } #region IDataErrorInfo public string Error { get { return Validateurs.Courant.GetErreurs(this); //string res=Validateurs.Courant.GetErreurs(this.CommandeFournisseurLignes); //res +='\n'+Validateurs.Courant.GetErreurs(this); //return res; } } public string this[string columnName] { get { this.OnPropertyChanged("Error"); return Validateurs.Courant.GetErreur(this, columnName); } } #endregion }
partial void OnQuantiteChanged()
{
base.OnPropertyChanged("Total_HT");
}
Fonctionne et permet de mettre à jour le total de la Commande ligne, Je voudrai donc faire de même avec la commande.
J'ai donc essayé base.OnPropertyChanged("CommandeFournisseur.Montant_HT"); mais ça ne fonctionne pas de cette manière...
Edit :
J'ai rajouté ceci dans ma class commande ligne :
ainsi que ceci dans commande :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 partial void OnQuantiteChanged() { base.OnPropertyChanged("Total_HT"); if(CommandeFournisseur!=null) this.CommandeFournisseur.OnMontantHtChanged(); }
Sa a donc l'air de fonctionner.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public void OnMontantHtChanged() { base.OnPropertyChanged("Montant_HT"); base.OnPropertyChanged("Ecart"); }
Merci
Partager