Ok. I was able to get the ObjectDataSource to work by disabling paging of the ObjectDataSource. However that opens up a big problem for me. The ODS allows you to do paging at the DataSource level so I can pass to my SelectMethod of the ODS the startRow and endRow of the data I want and the grid will display only that data in the grid. The method that you have in your sample will retrieve all of the data and then you can break it up if you want (ie, Paging). So, if I was to use your sample I would be loading in 1.2 Million records. Not a good thing to do.
So as to why I had to do my own paging was because of the way the GridGrouping control works with the ODS. I would call a routine that would only retrieve the data that i needed (20 rows at a time), bind the datatable to the grid and then manually update the page count to let the user know the page they were on. If they clicked a next button (all the paging buttons are seperate from the Grid) then the routine to get the next page would be called, grid binding to returned datatable and page count updated, etc, etc.
So, I guess the big question is can the GridGrouping Control work with the ODS that is setup in Paging Mode? When using other grids I can do this. I setup the SelectMethod and SelectCountMethod in the ODS and enable paging in the ODS and bind that to the grid and it just works.
I tried to enable paging in the sample you sent and I get an error regarding missing startRowIndexParameter and maximumRowsParameter (these are part of the ObjectDataSource that limit the selection of data in the SelectMethod that is used).
In my test.aspx page I have the following definition for my objectdatasource: TypeName="UserDataInfo" OnSelecting="ObjectDataSource1_Selecting" EnablePaging="true" SelectCountMethod="GetAllRows" >
FYI, SelectCountMethod is the method that returns the total number of Rows in the data so the paging buttons can be updated.