ASP.NET - В чем разница между DataSourceID и DataSource?
В чем отличие DataSourceID и DataSource от атрибута управления? Могу ли я использовать их взаимозаменяемо?
Когда я пытаюсь установить свойство DataSource
во время разработки, набрав его на странице aspx, я получаю исключение, в котором говорится, что свойство "DataSource" не может быть объявлено декларативно ". Но когда я использую окно свойств для изменения DataSource
, он не дает никаких исключений.
Ответы
Ответ 1
DataSource
относится к фактическому объекту источника данных, который может быть предоставлен .NET с элементами управления источником данных (такими как ObjectDataSource, SqlDataSource) или фактическими объектами данных, такими как DataTable, Collection of objects и т.д.
DataSourceID
- это строковый идентификатор для .NET, обеспечивающий контроль источника данных, и это свойство существует, чтобы связанный с данными контроль и соответствующий источник данных могли быть связаны во время разработки в разметке. Внутренне контроль будет искать фактическое управление источником данных с использованием предоставленного идентификатора.
Ответ 2
DataSourceID
может быть назначен идентификатор другого элемента управления источником данных типа ObjectDataSource
XmlDataSource
.
Обзор элементов управления источниками данных:
http://msdn.microsoft.com/en-us/library/ms227679.aspx
Существуют и другие типы элементов управления источниками данных, а также вы можете создавать свои собственные.
Datasource
используется, когда вы хотите напрямую указать источник для управления, например DataSet
или DataTable
Ответ 3
DataSource: Получает или задает объект, из которого элемент управления, связанный с данными, получает список элементов данных. (Унаследовано от BaseDataBoundControl
.)
DataSourceID: Получает или задает идентификатор элемента управления, из которого элемент управления, связанный с данными, получает список элементов данных. (Унаследовано от DataBoundControl
.)
Во-вторых, их можно использовать interchangeably
, но вы должны использовать их осторожно. например Если вы сначала назначили dataSourceID
, а затем хотите использовать DataSource
, то перед использованием DataSource
вам нужно очистить идентификатор источника данных, установив ControlID.DataSourceID = ""