Данный запрос наполняет DataGrid. Можно ли как то из этого же запроса наполнить combobox значениями колонки Manager_History.SIP не изменяя модель и тд.
var sips = @"select
Manager_History.SIP,
Projects.Project_name as Проект,
(RTRIM(user_info.firstname) + ' ' + RTRIM(user_info.name)) as Менеджер,
Manager_History.date_start,
Manager_History.time_start,
Manager_History.date_end,
Manager_History.time_end
from Manager
LEFT JOIN Manager_History ON(Manager_History.id = (select top 1 Manager_History.id from Manager_History where Manager_History.idmanager = Manager.id order by Manager_History.id desc))
LEFT JOIN Projects ON(Projects.id = Manager.idproject)
LEFT JOIN Users ON(Users.id = Manager.iduser)
LEFT JOIN user_info ON(user_info.id = Users.user_info_id)
WHERE((CAST(convert(varchar, Manager_History.date_end, 104) + ' ' + convert(varchar, Manager_History.time_end, 108) AS datetime) >= getdate()) OR Manager_History.date_end = '1900-01-01')
order by Manager_History.sip asc";
var result1 = db.Database.SqlQuery<BusySip>(sips);
sipGrid.ItemsSource = result1.ToList();
Модель:
public class BusySip
{
public Nullable<int> SIP { get; set; }
public string Проект { get; set; }
public string Менеджер { get; set; }
public Nullable<System.DateTime> date_start { get; set; }
public Nullable<System.TimeSpan> time_start { get; set; }
public Nullable<System.DateTime> date_end { get; set; }
public Nullable<System.TimeSpan> time_end { get; set; }
}
Я делаю так:
Создаю коллекцию нужных мне элементов в VM
public List<BusySip> BusySips{ get; set; }
Потом в разметке XAML привязываю ItemSource
контрола ComboBox
эту коллекцию и выбираю нужные мне поля через тег <Run>
.
<ComboBox ItemsSource="{Binding BusySips}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<Run Text="{Binding SIP}"/>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Для того чтобы узнать выбранный элемент, вы можете добавить ComboBox'y
свойство SelectedItem
.
<ComboBox ItemsSource="{Binding BusySips}" SelectedItem="{Binding SelectedBusySip}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<Run Text="{Binding SIP}"/>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
И объявить свойство в вашей VM
public BusySip SelectedBusySip{ get; set; }
Кажется, можно сделать так:
combobox.ItemsSource = result1.Select(x => x.SIP);
Но такое ощущение, что это уже не Mvvm, потому что идёт обращение к контролам WPF.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Добрый день, подскажитеЕсть запрос ajax, он работает, данные в БД передаются, ответ приходит, если в БД есть хоть 1 запись, то полученные данные...
Ситуация следующаяЕсть какой-то класс A, при создании которого в конструкторе на определенный узел DOM должен быть навешен обработчик