Hola
Yo creo que el dataset debes llenarlo una unica vez con
"SELECT * FROM Ppal" y crear dataviews filtrados en funcion de lo que se se seleccione en el combo, y que sean estos los que se enlacen con el grid en lugar de estar trayendo continuamente informacion de la base de datos.
Otra cosa:
Cita: El DataReader no es recomendable por que abre la conexion, mejor trata con un DataTable, asi no te preocupas de estar abriendo ni cerrando el objeto conexion....
No entiendo muy bien lo que se quiere decir con esto, que yo sepa los dataset no son telépatas, es decir, para llenarlos se necesita conectarse con la base de datos, ya sea a traves de un dataAdapter o un command, otra cosa es que una vez lleno la conexion no se mantenga, pero esta se realiza, ya sea implicitamente o declarada de forma explicita. En muchas ocasiones (cuando solo necesitamos leer datos de la base de datos) el datareader es la opción mas recomendable, ya que mientras que el dataset mantiene toda una tabla en memoria, el datareader solo deja una linea, y la verdad, la memoria del servidor no es como para tirarla. Y si todo el problema es tener que abrir y cerrar la conexion...
Salu2