Il problema che stai riscontrando è che il comando query sta impiegando troppo tempo. Credo che il timeout predefinito per l'esecuzione di una query sia di 15 secondi. È necessario impostare CommandTimeout (in secondi) in modo che sia sufficientemente lungo da consentire al comando di completare la sua esecuzione. Il "CommandTimeout" è diverso dal "Timeout connessione" nella stringa di connessione e deve essere impostato per ogni comando.
Nel tuo sql Selecting Event, usa il comando:
e.Command.CommandTimeout = 60
ad esempio:
Protected Sub SqlDataSource1_Selecting(sender As Object, e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs)
e.Command.CommandTimeout = 60
End Sub