Добрый день,
Я впервые создаю приложение в WPF.Приложение предназначено для отслеживания сотрудников, которые наняты компанией, отслеживать тип найма (например, ... категория назначения ... полный рабочий день, неполный рабочий день, сезонный, стажер).Кроме того, он будет отслеживать, в какой отдел назначен сотрудник за время пребывания в компании.Некоторые сотрудники работают в разных отделах, чтобы завершить обучение или из-за рабочей нагрузки.
Серверная часть этого приложения встроена в SQL Server и содержит три таблицы.Это сотрудники компании, отделы компании и категории назначений.У каждого, очевидно, есть свой первичный ключ.
Я создал сетку данных, которая через Linq to SQL Classes отображает данные из таблицы сотрудников компании.Каждый из столбцов в сетке данных представляет собой DataGridTextColumn, за исключением одного, который представляет собой DataGridComboBoxColumn.DataGridTextColumn работает нормально.Тем не менее, я не могу получить правильную привязку.Столбец отображается в таблице данных и является рабочим списком.Проблема в том, что я не могу найти, как заполнить поле со значениями, из которых выберет конечный пользователь.Этот комбинированный список позволит конечному пользователю выбирать, для какой категории назначения был нанят сотрудник.
В качестве конечного результата это приложение будет использоваться владельцем компании для отслеживания количества сотрудников, которых онимеет под рукой и показывает, кто будет уезжать каждый месяц из-за сезонного работника или стажера.
Ниже приведен код и xaml.Пожалуйста, обратите внимание, что я потратил несколько дней на изучение этой темы и не могу найти что-нибудь, что смогу сделать работу.Я уверен, что это потому, что я только изучаю xaml и c #.
Может кто-нибудь помочь мне понять, что я делаю не так, пожалуйста?
Код сзади:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace staff_scheduling_tool.views
{
/// <summary>
/// Interaction logic for employees_new_employee.xaml
/// </summary>
public partial class employees_new_employee : UserControl
{
assignment_typeDataContext dc = new assignment_typeDataContext(Properties.Settings.Default.db_employee_scheduling_applicationConnectionString);
public employees_new_employee()
{
InitializeComponent();
if (dc.DatabaseExists()) datagrid_search_results.ItemsSource = dc.companyemployees;
}
private void Save_changes_Click(object sender, RoutedEventArgs e)
{
dc.SubmitChanges();
}
}
}
XAML:
<DataGrid Name="datagrid_search_results" Margin="10,25" Width="1400" Height="350" AlternatingRowBackground="LightGreen" GridLinesVisibility="None" SelectionUnit="Cell" BorderBrush="Transparent" BorderThickness="0" Background="Transparent" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding employee_id}" Width="Auto" Header=" Employee ID" />
<DataGridTextColumn Binding="{Binding last_name}" Width="Auto" Header=" Last Name" SortDirection="Ascending" />
<DataGridTextColumn Binding="{Binding first_name}" Width="Auto" Header=" First Name"/>
<DataGridTextColumn Binding="{Binding middle_name}" Width="Auto" Header=" Middle Name"/>
<DataGridTextColumn Binding="{Binding company_email}" Width="Auto" Header=" Company Email"/>
<DataGridComboBoxColumn Width="Auto" Header="Assignment Category" />
<DataGridTextColumn Binding="{Binding department_assignment_begin_date, StringFormat=d}" Width="Auto" Header=" Begin Date"/>
<DataGridTextColumn Binding="{Binding department_assignment_end_date, StringFormat=d}" Width="Auto" Header=" End Date"/>
</DataGrid.Columns>
</DataGrid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="45"/>
</Grid.RowDefinitions>
<Button Name="save_changes" Content="Save Updates" Click="Save_changes_Click" Grid.Row="0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Width="250" FontFamily="Sitka Banner" FontSize="24" FontStyle="Italic" FontWeight="ExtraBold"/>
</Grid>
Итак, я смог найти приведенный ниже код для поля со списком.Однако поле со списком все еще не заполняется.Может кто-нибудь помочь мне понять, что я делаю неправильно, пожалуйста?
<DataGrid ItemsSource="{Binding db_employee_scheduling_application}"
Name="datagrid_search_results" Margin="10,25" Width="1400"
Height="350" AlternatingRowBackground="LightGreen" GridLinesVisibility="None"
SelectionUnit="Cell" BorderBrush="Transparent" BorderThickness="0"
Background="Transparent" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding employee_id}" Width="Auto" Header=" Employee ID" />
<DataGridTextColumn Binding="{Binding last_name}" Width="Auto" Header=" Last Name" SortDirection="Ascending" />
<DataGridTextColumn Binding="{Binding first_name}" Width="Auto" Header=" First Name"/>
<DataGridTextColumn Binding="{Binding middle_name}" Width="Auto" Header=" Middle Name"/>
<DataGridTextColumn Binding="{Binding company_email}" Width="Auto" Header=" Company Email" />
<DataGridComboBoxColumn Width="Auto" Header="Assignment Category"
ItemsSource="{Binding assignment categories}"
DisplayMemberPath="assignment category name"
SelectedValuePath="assignment category id"
SelectedValueBinding="{Binding assignment category name}"/>
<DataGridTextColumn Binding="{Binding department_assignment_begin_date, StringFormat=d}" Width="Auto" Header=" Begin Date"/>
<DataGridTextColumn Binding="{Binding department_assignment_end_date, StringFormat=d}" Width="Auto" Header=" End Date"/>
</DataGrid.Columns>
</DataGrid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="45"/>
</Grid.RowDefinitions>
<Button Name="save_changes" Content="Save Updates" Click="Save_changes_Click" Grid.Row="0"
HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Width="250"
FontFamily="Sitka Banner" FontSize="24" FontStyle="Italic" FontWeight="ExtraBold"/>
</Grid>