ASP.NET - В чем разница между DataSourceID и DataSource? - PullRequest
12 голосов
/ 17 августа 2011

В чем отличие DataSourceID и DataSource от атрибута элементов управления? Могу ли я использовать их взаимозаменяемо?

Когда я пытаюсь установить свойство DataSource во время разработки, набрав его на странице aspx, я получаю исключение, которое говорит: «Свойство DataSource нельзя установить декларативно». Но когда я использую окно свойств для изменения DataSource, оно не дает исключения.

Ответы [ 3 ]

11 голосов
/ 17 августа 2011

DataSource относится к фактическому объекту источника данных, который может быть элементом управления источника данных, предоставленным .NET (таким как ObjectDataSource, SqlDataSource) или фактическими объектами данных, такими как DataTable, Коллекция объектов и т. Д.

DataSourceID - строковый идентификатор для предоставленного .NET элемента управления источником данных, и это свойство существует, так что связанный с данными элемент управления и соответствующий источник данных могут быть связаны во время разработки в разметке. Внутренне элемент управления будет искать фактический элемент управления источником данных, используя предоставленный идентификатор.

6 голосов
/ 17 августа 2011

DataSourceID может быть присвоен идентификатор другого элемента управления источника данных типа, например ObjectDataSource XmlDataSource.

Обзор элементов управления источником данных:

http://msdn.microsoft.com/en-us/library/ms227679.aspx

Существуют также различные другие типы элементов управления источниками данных, или вы также можете разрабатывать свои собственные.

Datasource используется, когда вы хотите напрямую передать источник управления, например DataSet илиDataTable

1 голос
/ 17 августа 2011

DataSource: Получает или задает объект, из которого элемент управления с привязкой к данным извлекает свой список элементов данных.(Унаследовано от BaseDataBoundControl.)

DataSourceID: Получает или задает идентификатор элемента управления, из которого элемент управления с привязкой к данным извлекает свой список элементов данных.(Унаследовано от DataBoundControl.)

Во-вторых, их можно использовать interchangeably, но использовать их нужно осторожно.Например, если вы сначала назначаете dataSourceID, а затем хотите использовать DataSource, то перед использованием DataSource необходимо очистить datasourceID, установив ControlID.DataSourceID = ""

...