The GetData method calls the GetDataSource method internally. A valid IDataSource instance is retrieved by these two methods and is cached by the DataBoundControl object until the OnDataPropertyChanged method signals that the data source has changed.