Επειδή η ερώτησή σου μπορεί να φαίνεται απλή αλλά ουσιαστικά εμπεριέχει τις εξής ερωτήσεις:
1. Πώς μπορώ να φτιάξω μια φόρμα που να καταχωρείς όρο αναζήτησης και να ψάχνει στη database
2. Πώς μπορώ να εμφανίζω τα αποτελέσματα αναζήτησης μορφοποιημένα και paged
3. Πώς μπορώ να ορίσω φίλτρα
4. Πώς μπορώ να διατηρώ τα φίλτρα αυτά
θα περιοριστώ στο να σου δώσω μερικές ιδέες. Κατ'αρχήν, ένα datagridview θα σου κάνει τη δουλειά της παρουσίασης, ενώ αν γνωρίζεις sql ή EF θα μπορέσεις να περάσεις τα arguments που θέλεις στη βάση σου και να φέρεις πίσω τα αποτελέσματα.
Τα φίλτρα είναι μια άλλη ιστορία. Θα πρέπει ουσιαστικά να έχεις lookup tables στη βάση σου με συγκεκριμένες εγγραφές και foreign keys στις κυρίως εγγραφές των προϊόντων σου σε αυτά προκειμένου να μπορείς α) να επιλέξεις τιμές για τα φίλτρα σου και β) να περιορίσεις τα αποτελέσματα αναζήτησής σου σε ικανοποιητικό βαθμό. Ξεχνάς τα string searches δηλαδή.
Πώς διατηρείς τα φίλτρα; Χμ, εδώ υπάρχουν πολλοί τρόποι. Ενας τρόπος είναι να περιλαμβάνεις όλη την πληροφορία των φίλτρων στο querystring, ΜΑΖΙ με τον όρο αναζήτησης. Ετσι μια σελίδα αποτελεσμάτων αναζήτησης για κάποιο συγκεκριμένο όρο μαζί με τα φίλτρα της θα μπορούσε να γίνει bookmark, share κλπ. (Αν χρησιμοποιήσεις plain sql για να κάνεις τις αναζητήσεις σου, θυμήσου: PARAMETERS και όχι string concatenations).
Αλλος τρόπος είναι να κρατάς τις τιμές στο viewstate ώστε σε κάθε form submit αυτές να περνάνε ξανά.
Αλλος (κακός, IMHO) τρόπος είναι να κρατάς τις τιμές των φίλτρων στο session.
Ξέρω οτι αυτά που σου λέω δεν είναι πολλά...αλλά πίστεψέ με, έτσι όπως έκανες την ερώτηση χρειάζεται ένας μικρός ...τόμος για να απαντήσει κάποιος πλήρως :)
Σωτήρης Φιλιππίδης
DotSee Web Services