Я создал компонент для извлечения данных из веб-службы. Веб-служба возвращает набор данных ADO.NET.
Я хотел бы, чтобы этот компонент был источником данных для связывания с другими элементами управления. Данные для источника будут набором данных.
Итак, я добавил свойство DataSet к компоненту.
private DataSet _dataSet;
public DataSet DataSet
{
get { return _dataSet; }
set
{
if (_dataSet == value)
return;
_dataSet = value;
OnPropertyChanged (this, new PropertyChangedEventArgs ("DataSet"));
}
}
Я реализовал IListSource для компонента.
public partial class MyComponent : Component, INotifyPropertyChanged, IListSource
{
...
IList IListSource.GetList()
{
return DataSet == null ? null : ((IListSource)DataSet).GetList();
}
bool IListSource.ContainsListCollection
{
get { return DataSet != null && ((IListSource)DataSet).ContainsListCollection; }
}
...
}
В методе получения данных от веб-службы я делаю следующее:
...
DataSet = response.DataSet; // Copy dataset from web service to the component.
...
Затем я создал новый проект WinForms с формой. В этой форме я добавил свой компонент и DataGridView. Установите связь между ними.
После запуска приложения вызывается веб-служба и принимается набор данных. Тем не менее, пользовательский интерфейс не показывает данные.
Я даже пытался создать набор данных в конструкторе компонента, и вместо замены набора данных в свойстве DataSet я просто делаю
_dataSet.Reset ();
_dataSet.Merge (value);
По-прежнему не действует.
Есть ли событие или метод, который мне нужно вызвать, чтобы набор данных сообщил, что он обновлен?
Что мне здесь не хватает?