Hello,
Je rentre directement dans le vif du sujet avec un bout de code...
J'ai donc data qui est wrapper autour d'objets similaire mais différents (l'un possède une propriété CodeDemo et l'autre non). Or j'ai besoin de donner la possibilité à l'utilisateur de filtrer le contenu de ce wrapper suivant 3 critères qui peuvent se combiner.
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 Private Sub btnFilter_Click(sender As Object, e As EventArgs) Dim data = (From d In Promo.DTO.DetailsDemo Select Id = d.Id, Department = d.CodeDemo.Department, CodeDemo = d.CodeDemo, Percentage = d.Percentage, Description = d.Description, Note = d.Note, ListType = d.ListType From d In Promo.DTO.DetailsDepartment Select Id = d.Id, Department = d.Department, CodeDemo = New PROMO_DTO.CodeDemo(0, "0000", "", "", Nothing, Nothing, Nothing, Nothing, Nothing, False), Percentage = d.Percentage, Description = d.Description, Note = d.Note, ListType = d.ListType).ToList If ckbDepartment.Checked Then data = (From d In data Where d.Department.Id = CShort(cbDepartment.SelectedValue) Select d).ToList End If If ckbConcession.Checked Then data = (From d In data Where d.CodeDemo.Id = CInt(cbConcession.SelectedValue) Select d).ToList End If If ckbPercent.Checked Then data = (From d In data Where d.Percentage = nudPercent.Value Select d).ToList End If dgvDemo.DataSource = data End Sub
J'ai donc utiliser des checkboxes pour activer ou non le critère de filtrage et si c'est coché, je fais le filtre.
A priori, je trouve ça plutôt propre mais j'aurais voulu avoir votre avis.
Aussi, je cherche une manière plus élégante pour boucher le trou que devrait occuper la propriété CodeDemo dans la 2e selection de mon wrapper...
Actuellement, j'ai donc ceci (je remets le code du dessus) :
C'est donc le New PROMO_DTO.CodeDemo(0, "0000", "", "", Nothing, Nothing, Nothing, Nothing, Nothing, False) qui m'ennuie. Je peux mettre nothing et le wrapper est valide mais la propriété du type anonyme est alors de type Object et non pas de type CodeDemo et du coup, pas moyen de faire le filtre (à moins que je puisse faire un cast au moment du filtrage... je viens d'y penser).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Dim data = (From d In Promo.DTO.DetailsDemo Select Id = d.Id, Department = d.CodeDemo.Department, CodeDemo = d.CodeDemo, Percentage = d.Percentage, Description = d.Description, Note = d.Note, ListType = d.ListType From d In Promo.DTO.DetailsDepartment Select Id = d.Id, Department = d.Department, CodeDemo = New PROMO_DTO.CodeDemo(0, "0000", "", "", Nothing, Nothing, Nothing, Nothing, Nothing, False), Percentage = d.Percentage, Description = d.Description, Note = d.Note, ListType = d.ListType).ToList
J'aimerais assez ne pas devoir créer un dummy CodeDemo dans ce second select.
Une idée ?? (j'ai tenté la recherche sur le net mais vu que j'ignore les mots clefs à utiliser, je n'ai pas trouvé mon bonheur)
Partager