WPF Datagridcomboboxcolumn Binding Issue - PullRequest
       1

WPF Datagridcomboboxcolumn Binding Issue

0 голосов
/ 27 февраля 2019

Добрый день,

Я впервые создаю приложение в 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>
...