Так что я относительно новичок в WPF, и одна из приятных особенностей, о которых мне говорили, - это настраиваемые столбцы в datagrids.
Так вот мой вопрос.
У меня есть две таблицы базы данных, таблица Employee и таблица Occupation.
Таблица сотрудников
Занятие
И, как вы видите, у меня есть внешний ключ, связывающий две таблицы. Поэтому в моем приложении я установил свой DataGrid ItemsSource = список сотрудников. В своей DataGrid я сам определил столбцы, я отключил свойство AutoGenerateColumns. У меня 4 колонки,
0: TextColumn
1: TextColumn
2: TextColumn
3: ComboBoxColumn
Итак, мой вопрос, как я могу установить для ItemsSource ComboBoxColumn (4-й столбец) список моего класса Occupation, отображающий описание занятия из внешнего ключа OccupationID? и заполнение поля со всеми описаниями занятий?
Мой код:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
List<Employee> employees;
private void gridMain_Loaded(object sender, RoutedEventArgs e)
{
employees = EmployeeDataHandler.getAllEmployees();
List<Occupation> occs = OccupationDataHandler.getAllJobs();
dgEmployee.ItemsSource = employees;
}
}
class Employee
{
public int ID { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public int Occupation { get; set; }
}
class Occupation
{
public int ID { get; set; }
public string Description { get; set; }
}
И мой код xaml:
<Grid x:Name="gridMain" Loaded="gridMain_Loaded">
<DataGrid x:Name="dgEmployee" HorizontalAlignment="Left" Height="301" Margin="10,10,0,0" VerticalAlignment="Top" Width="498" IsSynchronizedWithCurrentItem="True" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding ID}" ClipboardContentBinding="{x:Null}" Header="System ID"/>
<DataGridTextColumn Binding="{Binding Name}" ClipboardContentBinding="{x:Null}" Header="Name"/>
<DataGridTextColumn Binding="{Binding Surname}" ClipboardContentBinding="{x:Null}" Header="Surname"/>
<DataGridComboBoxColumn ClipboardContentBinding="{x:Null}" Header="Occupation" SelectedValueBinding="{x:Null}" SelectedItemBinding="{x:Null}" TextBinding="{x:Null}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
Большое спасибо, что нашли время, чтобы прочитать мой вопрос. Постскриптум Это все поддельные данные, поэтому не беспокойтесь об именах на скриншоте