Yo haría una funcion que me devuelva el dr (datareader) por si lo vuelvo a necesitar, y lo cargo al datalist.
Ejemplo.
Cita: Private Function
RetrieveReader () As OleDbDataReader
Dim strSQL As String = "SELECT * FROM prueba"
Dim strConn As String = "Provider=Microsoft.JET.OLEDB.4.0;data source=c:\clientes\visual .net\bd1.mdb"
Dim oConn As New OleDbConnection(strConn)
Dim cmd As New OleDbCommand(strSQL, oConn)
oConn.Open()
Dim dr As OleDbDataReader = cmd.ExecuteReader(CommandBehavior.
CloseConnection )
Return dr
End Function
Y para llamarlo a mi datalist sería:
Cita: Lista.DataSource = RetrieveReader()
Lista.DataBind()
Con ello es mas entendible lo que estás haciendo

y si necesitas cargar tu datalist porque estás haciendo algun edit, update, etc solo es cosa de llamar a tu funcion.
Espero te funcione.
Saludos y suerte. . .