Ένα χρησιμότατο .ΝΕΤ control για την αυτόματη δημιουργία μίας φόρμας επιλογής πεδίων ταξινόμησης σε εφαρμογές διαχείρισης Βάσης Δεδομένων. Παρέχει πολλές ιδιότητες διαμόρφωσης των χαρακτηριστικών του. Στην παρακάτω εικόνα βλέπετε ένα παράδειγμα :
Τι νέο υπάρχει στην έκδοση 1.1
Τι νέο υπάρχει
στην έκδοση 1.3
Τι νέο υπάρχει
στην έκδοση 1.4
Τι νέο υπάρχει
στην έκδοση 1.5
Χρήστος Μουρατίδης,
Ιανουάριος 2006
Αποσυμπιέσετε με ένα πρόγραμμα συμπίεσης πχ. WinZip τα περιεχόμενα του αρχείου SortControl.zip σε κάποιο φάκελο στο δίσκο. Θα δείτε να δημιουργείται ένας φάκελος με όνομα SortControl Test, ο οποίος περιέχει ένα project δείγματος χρήσης του control
καθώς και το παρόν readme αρχείο. Το project παρέχει μία υποδειγματική εφαρμογή χρήσης του control.
Σε αρκετές εφαρμογές, ο προγραμματιστής επιθυμεί να δημιουργεί μία φόρμα όπου θα δίνει τη δυνατότητα στο χρήστη της εφαρμογής του να επιλέγει κάποια πεδία ταξινόμησης και το είδος αυτής (αύξουσα ή φθίνουσα). Στη συνέχεια, με βάση τις επιλογές του να ανοίγει από κάποια Βάση Δεδομένων ένα set εγγραφών με την ταξινόμηση αυτή μέσω μίας εντολής SELECT της γλώσσας SQL. Ως γνωστόν, στο τμήμα ORDER BY της εντολής καθορίζουμε την ταξινόμηση των εγγραφών.
Το SortControl, λοιπόν, επιστρέφει ένα string που μπορεί να χρησιμοποιηθεί στο τμήμα ORDER BY :
Π.χ.
Select * From ΜΑΘΗΤΕΣ Order by
“ & SortControl1.SortString
Όπου η SortString μπορεί να περιέχει το string “ΕΠΩΝΥΜΟ ASC, ΟΝΟΜΑ DESC”
Επιπλέον, μπορεί να χρησιμοποιηθεί και στην ιδιότητα Sort του DataView :
Π.χ.
DataView1.Sort = Sortcontrol1.SortString
Οπότε ταξινομεί τις τρέχουσες εγγραφές ενός DataView.
Από την έκδοση 1.5 υπάρχει η δυνατότητα να καθορίσουμε, μέσω κώδικα, αν θέλουμε να μην εμφανίζεται ένα πεδίο στα combos του SortControl. Αυτό γίνεται μέσω της μεθόδου SetFieldVisible ως εξής :
Πχ. Sortcontrol1.SetFieldVisible(“ID”,False)
Το πεδίο ID του DataTable που έχουμε δηλώσει, δεν θα εμφανίζεται στα combos. Εξ΄ ορισμού, όλα τα πεδία εμφανίζονται.
Επίσης, μέσω της ιδιότητας SortFieldsArrayList επιστρέφεται ένα ArrayList με αντικείμενα τύπου SortFieldsArrayListItem. Καθένα από αυτά περιέχει το όνομα του επιλεγμένου πεδίου και τον τύπο της ταξινόμησης (FieldName, OrderBy). Έτσι, μπορεί να χρησιμοποιηθεί και για άλλους σκοπούς. Να σημειωθεί ότι, η ιδιότητα SortFieldsArrayList μπορεί να καθοριστεί από τον προγραμματιστή μέσω κώδικα, οπότε μόλις ανοίγει η φόρμα που περιέχει το control να γεμίζουν αυτόματα τα combos.
Δείτε την εφαρμογή επίδειξης που περιέχει αρκετά σχόλια ως τεκμηρίωση.
Παρακάτω παρουσιάζονται οι ιδιότητες, μέθοδοι και τα γεγονότα του control :
1) DataTableSource :ο πίνακας τροφοδότης των πεδίων, τύπου DataTable.
2) SortString :Το επιστρεφόμενο SortString
που θα χρησιμoποιηθεί στο τμήμα ORDER BY μίας SQL πρότασης ή σε
ένα DataView.
3) SortFieldsArrayList :To ArrayList των Sort Fields
με το order
by μαζί, δηλαδή τα αντικείμενα τύπου
SortFieldsArrayListItem
4) ErrorMsg :Το μήνυμα λάθους που επιστρέφει το γεγονός ErrorSorting
5) SortedCombos :Να είναι ταξινομημένα τα στοιχεία των combos;
6) ForeColorLabels :To ForeColor των ετικετών των combos.
7)
ForeColorCombos :To ForeColor του κειμένου των
combos.
8)
ForeColorAscDesc :To ForeColor των γραμμάτων Αύξουσα / Φθίνουσα.
9)
ForeColorButtons :To ForeColor των γραμμάτων των buttons.
10)BackColorLabels :To BackColor των ετικετών των combos.
11)BackColorAscDesc :To BackColor των γραμμάτων Αύξουσα / Φθίνουσα.
12)BackColorButtons :To BackColor των buttons.
13)FontLabels :To Font των ετικετών των combos.
14)FontCombos :To Font
του κειμένου
των combos.
15)FontAscDesc :To Font
των γραμμάτων
Αύξουσα / Φθίνουσα.
16)FontButtons :To Font
των γραμμάτων
των buttons.
17) VisibleBtnCancel :Θα είναι
ορατό το button Cancel;
18) VisibleBtnΟΚ :Θα είναι
ορατό το button ΟΚ; (νέο στην έκδοση 1.3)
1) ΟnOKPressed() : Ενεργοποιείται όταν πατηθεί το OK.
2) OnCancelPressed() : Ενεργοποιείται όταν πατηθεί το Ακύρωση.
3) OnClearPressed() : Ενεργοποιείται όταν πατηθεί το Απαλειφή.
4) OnErrorSorting() : Ενεργοποιείται όταν συμβεί κάποιο λάθος. Τότε η ιδιότητα ErrorMsg θα επιστρέψει το μήνυμα λάθους.
1) CreateSortStringAndCollection : Δημιουργεί το SQL
sort string και το SortArrayList. Χρήσιμη μέθοδος όταν δεν
θέλετε να δημιουργούνται
μέσω του button ΟΚ (δεν
είναι ορατό) (νέο στην έκδοση 1.3).
2) SetCaption : Αλλάζει το caption
ενός πεδίου
(νέο στην έκδοση 1.1).
3) SetFieldVisible : Καθορίζει, αν ένα πεδίο
του DataTable, θα εμφανίζεται ή όχι στα combos
(νέο στην
έκδοση 1.5)
1)
SortFieldsArrayListItem : Ένα
αντικείμενο της δομής SortFieldsArrayList
Προσθέστε στο ToolBox της VB.NET το SortControl και χρησιμοποιήστε το ελεύθερα στις εφαρμογές σας. Το assembly αρχείο SortControl.dll θα το βρείτε στο φάκελο bin.
Αν στα References του project δείγματος χρήσης εμφανίζει με κίτρινο θαυμαστικό το sortcontrol τότε πρέπει να ενημερώσετε το Reference Path του project ώστε να ψάχνει στο φάκελο που έχετε βάλει το dll του control.
1) Στο Solution Explorer κάντε δεξί κλικ στο prοject και επιλέξτε Properties.
2) Στο παράθυρο ιδιοτήτων του project που ανοίγει, πηγαίνετε στο τμήμα Common Properties και Reference Path.
3) Δεξιά, πατήστε το browse button (...) για να βρείτε το Folder όπου βρίσκεται το assembly dll του control στον δικό σας υπολογιστή.
4) Πατήστε το button Update. Σώστε το project, κλείστε το και ξανανοίξτε το. Τώρα, πρέπει να εμφανίζονται όλα κανονικά.
Για οποιεσδήποτε παρατηρήσεις στείλτε e-mail στην παρακάτω διεύθυνση.
mouratx@yahoo.com
Χρήστος Μουρατίδης
Πλέον, μπορούμε να καθορίσουμε
να εμφανίζεται ή όχι ένα πεδίο του DataTable στα
combos
του control. Αυτό
γίνεται με τη μέθοδο SetFieldVisible.
Π.χ. Sortcontrol1.SetFieldVisible(“ID”,False)
1) Πλέον μπορούμε να θέσουμε στην ιδιότητα DataTableSource=Nothing, οπότε τα combos μηδενίζονται (δηλ., δεν εμφανίζονται πεδία για επιλογή). Θα πρέπει να ξαναθέσετε την ιδιότητα για να το κάνετε πάλι λειτουργικό.
2) Μερικές βελτιώσεις στον κώδικα.
1) Πλέον δεν χρειάζεται να είναι ορατό το button OK για να δημιουργηθεί το SQL sort string και το SortArrayList. Η νέα ιδιότητα VisibleBtnΟΚ καθορίζει αν θα είναι ορατό το button OK. Αν δεν είναι ορατό, τότε χρησιμοποιείστε τη νέα μέθοδο CreateSortStringAndCollection για τη δημιουργία του SQL sort string.
2) H νέα μέθοδοs CreateSortStringAndCollection εξαναγκάζει το control να δημιουργήσει το SQL sort string και το SortArrayList.
1) Θέτοντας στην ιδιότητα DataTableSource τιμή Nothing πλέον δεν εμφανίζει run-time error.
2) Διορθώθηκε το ορθογραφικό λάθος του button Απαλειφή στο σωστό Απαλοιφή.
1) Τα comboboxes πλέον, εμφανίζουν τις περιγραφές (captions) των πεδίων και όχι τα ονόματα των πεδίων του Source DataTable. Το control, αυτομάτως, μόλις τεθεί η ιδιότητα DataTableSource, θέτει ως captions τα ονόματα των πεδίων, σε όσα δεν έχουν ήδη κάποιο caption. Δηλαδή, τυχόν υπάρχον caption δεν επηρεάζεται.
Με τη νέα μέθοδο SetCaption, μπορούμε να αλλάξουμε το caption ενός πεδίου :
Π.χ. SortControl1.SetCaption (”ΕΤΟΣ_ΓΕΝΝ”, “ Έτος γέννησης”)
Όπου το πεδίο του πίνακα με όνομα ΕΤΟΣ_ΓΕΝΝ αλλάζει στο πιο περιγραφικό ‘Ετος γέννησης
Αυτό είναι χρήσιμο όταν, για παράδειγμα, στη δομή ενός πίνακα έχουμε πεδία στα αγγλικά και θέλουμε να εμφανίζονται στα comboboxes με ελληνικές περιγραφές.
Αυτή η προσθήκη δεν επηρεάζει την υπόλοιπη συμπεριφορά του control.
2) Διορθώθηκε ένα bug που αφορούσε τον καθορισμό της ιδιότητας SortFieldsArrayList, όταν θέταμε και 3ο πεδίο ταξινόμησης..