What is the difference of DataSourceID and DataSource from the controls’ attribute? Can I use them interchangeably?
When I try to set DataSource property at the design time, by typing it on the aspx page, I get an exception that says “The ‘DataSource’ property cannot be set declaratively.”. But when I use property window to change the DataSource, it gives no exception.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
DataSource refers to actual data source object which can be .NET provided data source controls (such as ObjectDataSource, SqlDataSource) or actual data objects such as DataTable, Collection of objects etc.
DataSourceID is the string identifier for .NET provided data source control and this property exists so that data-bound control and corresponding data source can be associated at the design time in markup. Internally, the control would look up for actual data source control using the id provided.
Method 2
DataSourceID can be assigned an ID of other data source control of type such as ObjectDataSource XmlDataSource .
Data Source Controls overview:
http://msdn.microsoft.com/en-us/library/ms227679.aspx
There are various other types of data source controls as well or you can develop your own as well.
Datasource is used when you want to directly give the source to control such as DataSet or a DataTable
Method 3
DataSource: Gets or sets the object from which the data-bound control retrieves its list of data items. (Inherited from BaseDataBoundControl.)
DataSourceID: Gets or sets the ID of the control from which the data-bound control retrieves its list of data items. (Inherited from DataBoundControl.)
Secondly they can be used interchangeably, but you have to use carefully. e.g. If you first assign dataSourceID and then want to use DataSource, then before using DataSource, you have to clear the datasourceID by setting ControlID.DataSourceID = ""
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0