Βασικά έχεις να διαλέξεις ανάμεσα σε δύο επιλογές, η κάθε μία με τα πλεονεκτήματα και τα μειονεκτήματά της. Η πρώτη είναι να ξανακάνεις ένα query στη βάση και η δεύτερη είναι να δουλέψεις στα data που έχεις ήδη. Στην πρώτη περίπτωση, θα έχεις φρέσκα data (δηλαδή θα φέρεις και τις αλλαγές που έχουν κάνει οι υπόλοιποι χρήστες στα data) ωστόσο θα υπάρχει το κόστος του να τα φέρεις από τη βάση. Αν το query σου είναι ίδιο ως προς τις στήλες που φέρνει (ίδια σειρά, όνομα και τύπος) o πίνακας θα αντικαταστήσει αυτόν που έχεις ήδη μέσα στο DataSet και απλά θα δεις τα νέα περιεχόμενα στο DataGridView. Ουσιαστικά, θα περάσεις το select statement στο SqlCommand και τα ξανακάνεις fill το DataTable μέσα στο DataSet.
Η δεύτερη περίπτωση είναι να δουλέψεις πάνω στα data που έχεις ήδη φέρει τοπικά. Αν για παράδειγμα σε κάποιο grid θες να δώσεις τη δυνατότητα στο χρήστη να φιλτράρει τα data προκειμένου να κάνει αναζητήσεις, είναι πολύ πιο εύκολο να δουλέψεις με αυτόν τον τρόπο. Βέβαια, θα πρέπει να χρησιμοποιήσεις το BindingSource ώστε να εκμεταλλευτείς τις ευκολίες που παρέχει. Δες εδώ αυτή τη συζήτηση. Το BindingSource έχει το Filter property μέσω του οποίου μπορείς να δεις τα data σου, ας το πούμε, κάτω από διαφορετικά views, χωρίς να χρειάζεται να περιένεις να έρθουν από τη βάση.
Vir prudens non contra ventum mingit