Le problème que vous rencontrez est que la commande de requête prend trop de temps. Je crois que le délai d'attente par défaut pour l'exécution d'une requête est de 15 secondes. Vous devez définir le CommandTimeout (en secondes) afin qu'il soit suffisamment long pour que la commande termine son exécution. Le "CommandTimeout" est différent du "Connection Timeout" dans votre chaîne de connexion et doit être défini pour chaque commande.
Dans votre sql Selecting Event, utilisez la commande :
e.Command.CommandTimeout = 60
par exemple :
Protected Sub SqlDataSource1_Selecting(sender As Object, e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs)
e.Command.CommandTimeout = 60
End Sub