У меня есть пример C #, который заполняет комбинированный список с несколькими выборками.Это было из примера, найденного в Интернете.Он отлично работает со статическими значениями из наблюдаемой коллекции.
Я хочу изменить это на управление базой данных из серверной части SQL Server, но возникли проблемы.Я получил его, чтобы заполнить поле со списком, но выбор действует как шутка.Вот пример кода, если кто-нибудь может помочь.Для этого достаточно простого типа запроса из таблицы Northwind, например: «Выбрать CategoryName из категорий».
Поэтому вопрос заключается в следующем: как преобразовать эту коллекцию ObservableCollection, чтобы использовать запрос из базы данных, а не статический список строк?используется в примере ниже?при реализации того же свойства изменились функциональные возможности.
class DataSource : INotifyPropertyChanged
{
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
private ObservableCollection<string> _animals = new ObservableCollection<string> { "Cat", "Dog", "Bear", "Lion", "Mouse", "Horse", "Rat", "Elephant", "Kangaroo", "Lizard", "Snake", "Frog", "Fish", "Butterfly", "Human", "Cow", "Bumble Bee" };
public ObservableCollection<string> Animals
{
get { return _animals; }
}
private string _selectedAnimal = "Cat";
public string SelectedAnimal
{
get { return _selectedAnimal; }
set
{
_selectedAnimal = value;
OnPropertyChanged("SelectedAnimal");
}
}
private ObservableCollection<string> _selectedAnimals;
public ObservableCollection<string> SelectedAnimals
{
get
{
if (_selectedAnimals == null)
{
_selectedAnimals = new ObservableCollection<string> { "Dog", "Lion", "Lizard" };
SelectedAnimalsText = WriteSelectedAnimalsString(_selectedAnimals);
_selectedAnimals.CollectionChanged +=
(s, e) =>
{
SelectedAnimalsText = WriteSelectedAnimalsString(_selectedAnimals);
OnPropertyChanged("SelectedAnimals");
};
}
return _selectedAnimals;
}
set
{
_selectedAnimals = value;
}
}
public string SelectedAnimalsText
{
get { return _selectedAnimalsText; }
set
{
_selectedAnimalsText = value;
OnPropertyChanged("SelectedAnimalsText");
}
} string _selectedAnimalsText;
private static string WriteSelectedAnimalsString(IList<string> list)
{
if (list.Count == 0)
return String.Empty;
StringBuilder builder = new StringBuilder(list[0]);
for (int i = 1; i < list.Count; i++)
{
builder.Append(", ");
builder.Append(list[i]);
}
return builder.ToString();
}
}