I find it unfortunatle that Microsoft has made is way too difficult to write your own DataSource enabled controls. Deriving from DataBoundControl, but it still does not seem to be a way to synchronously get the data from the DataSource. In a DataBoundControl control you can get the DataSourceView like so:
DataSourceView view = this.GetData();
Great! Except that to actually get the code from the view requires you call view.Select() which is asynchronous. Luckily for Microsoft, their controls use a friend/internal method called ExecuteSelect(). If you look into the code that the GridView, FormView and DetailsView use, they don’t call it asynchronously, but you have to ;)
There was a LadyBug filed…but was marked as “We’re not taking new suggestions for Whidbey any more”.
That leaves the control designer with two options, call it asynchronously or use reflection hackery to call ExecuteSelect. ARG!