La propiedad DataSourceMode del control SqlDataSource determina cómo se mantienen los datos extraídos.
El valor predeterminado de la propiedad DataSourceMode es DataSet, lo que significa que el conjunto de resultados extraído de la base de datos se almacena en un objeto DataSet en la memoria del servidor si utiliza SqlDataSource como fuente de datos para controles como GridView y desea ordenar. en el control GridView, para procesos como filtrado y paginación, la propiedad DataSourceMode de SqlDataSource debe establecerse en DataSet.
Sin embargo, por otro lado, si los datos extraídos por SqlDataSource solo se usan como opciones para controles como DropDownList y ListBox, sin ordenar, filtrar, paginar, etc., entonces la propiedad DataSourceMode de SqlDataSource debe establecerse en DataReader, de modo que Reducir el consumo de recursos. Después de todo, usar un DataSet en este momento es simplemente matar un pollo con un cuchillo.
Una vez que establezca la propiedad DataSourceMode en DataReader, los datos se recuperarán a través de un objeto IDataReader (es decir, un puntero de datos directo y de solo lectura) y el conjunto de resultados no se almacenará en la memoria del servidor.
Si comprende claramente las características y diferencias entre el modelo de conjunto de datos y el modelo de comando de datos, creo que debería poder saber cuándo usar DataSet y cuándo usar DataReader.
http://www.cnblogs.com/liminzhang/archive/2006/12/18/595332.html