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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| Private Sub FilterAndSortData(filters As Dictionary(Of Filter, Decimal), Optional ByVal PropertyToSort As String = Nothing, Optional ByVal sortorder As SortOrder = Nothing)
Dim data = (From d In Promo.DTO.DetailsOwn
Select Id = d.Id, Department = d.Department, Brand = d.Brand, BrandCode = d.Brand.Code, BrandName = d.Brand.Description, Percentage = d.Percentage, PercentType = d.PercentType.Description, Description = d.Description, Note = d.Note, ListType = d.ListType, Type = "Own", Attachment = d.Attachment, Seasons = (d.Seasons.Count > 0), SeasonsList = d.Seasons).Concat(
From d In Promo.DTO.DetailsDepartment
Select id = d.Id, Department = d.Department, Brand = CType(Nothing, PROMO_DTO.Brand), BrandCode = CType(Nothing, Integer), BrandName = CType(Nothing, String), Percentage = d.Percentage, PercentType = d.PercentType.Description, Description = d.Description, Note = d.Note, ListType = d.ListType, Type = "Dept", Attachment = d.Attachment, Seasons = (d.Seasons.Count > 0), SeasonsList = d.Seasons)
If Not IsNothing(filters) Then
For Each key As Filter In filters.Keys
Select Case key
Case Filter.Department
data = (From d In data
Where d.Department.Id = dicFilter(key)
Select d)
Case Filter.Brand
data = (From d In data
Where d.Brand.Id = dicFilter(key)
Select d)
Case Filter.Percent
data = (From d In data
Where d.Percentage = dicFilter(key)
Select d)
End Select
Next
End If
If Not IsNothing(PropertyToSort) Then
If sortorder = Windows.Forms.SortOrder.Ascending Then
Select Case PropertyToSort
Case "Department"
data = data.OrderBy(Function(x) x.Department.Code)
Case "BrandCode"
data = data.OrderBy(Function(x) If(x.Brand Is Nothing, 0, x.Brand.Code))
'data = data.OrderBy(Function(x) x.Brand.Code)
Case "BrandName"
data = data.OrderBy(Function(x) If(x.Brand Is Nothing, "", x.Brand.Description))
Case "Percentage"
data = data.OrderBy(Function(x) x.Percentage)
Case "PercentType"
data = data.OrderBy(Function(x) x.PercentType)
Case "Description"
data = data.OrderBy(Function(x) x.Description)
Case "Note"
data = data.OrderBy(Function(x) x.Note)
Case "ListType"
data = data.OrderBy(Function(x) x.ListType)
End Select
ElseIf sortorder = Windows.Forms.SortOrder.Descending Then
Select Case PropertyToSort
Case "Department"
data = data.OrderByDescending(Function(x) x.Department.Code)
Case "BrandCode"
data = data.OrderByDescending(Function(x) If(x.Brand Is Nothing, 0, x.Brand.Code))
Case "BrandName"
data = data.OrderByDescending(Function(x) If(x.Brand Is Nothing, "", x.Brand.Description))
Case "Percentage"
data = data.OrderByDescending(Function(x) x.Percentage)
Case "PercentType"
data = data.OrderByDescending(Function(x) x.PercentType)
Case "Description"
data = data.OrderByDescending(Function(x) x.Description)
Case "Note"
data = data.OrderByDescending(Function(x) x.Note)
Case "ListType"
data = data.OrderByDescending(Function(x) x.ListType)
End Select
End If
End If
dgvOwn.DataSource = data.ToList
End Sub |
Partager