A propriedade DataSourceMode do controle SqlDataSource determina como os dados extraídos são mantidos.
O valor padrão da propriedade DataSourceMode é DataSet, o que significa que o conjunto de resultados extraído do banco de dados é armazenado em um objeto DataSet na memória do servidor se você usar SqlDataSource como fonte de dados para controles como GridView e desejar classificar. no controle GridView, para processamento como filtragem e paginação, a propriedade DataSourceMode de SqlDataSource deve ser definida como DataSet.
Porém, por outro lado, se os dados extraídos pelo SqlDataSource forem utilizados apenas como opções de controles como DropDownList e ListBox, sem ordenação, filtragem, paginação, etc., então a propriedade DataSourceMode do SqlDataSource deverá ser setada como DataReader, para que Reduza o consumo de recursos. Afinal, usar um DataSet neste momento é simplesmente matar uma galinha com uma faca.
Depois de definir a propriedade DataSourceMode como DataReader, os dados serão recuperados por meio de um objeto IDataReader (ou seja, um ponteiro de dados de encaminhamento e somente leitura) e o conjunto de resultados não será armazenado na memória do servidor.
Se você tiver uma compreensão clara das características e diferenças entre o modelo de conjunto de dados e o modelo de comando de dados, acredito que deverá saber quando usar o DataSet e quando usar o DataReader.
http://www.cnblogs.com/liminzhang/archive/2006/12/18/595332.html