"If you don’t want the control to create and destroy instances, you can override the default behaviour capturing the Creating and Disposing events. If you supply a value for the argument ObjectInstance, the control will use this object instead of creating a new instance. If you set the Cancel argument of the Disposing event, the control won’t try to dispose the object."
My select and update methods are instance methods that belong to the page itself. Which is to say the TypeName is the type of the object datasource's page. By default the object datasource creates a new instance of the class set in TypeName and then calls the appropriate method. By putting this code in my page, I was able to have access to ViewState inside those methods.
protected void ObjectDataSource_ObjectDisposing(object sender, ObjectDataSourceDisposingEventArgs e)
{
e.Cancel = true;
}
protected void ObjectDataSource_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
{
e.ObjectInstance = this;
}
Now the object data source uses the current page instance which means you can access ViewState, controls, and custom page properties.