Rabee3-F1.787545 Ответов: 1

Мне нужно заполнить combobox в таблице данных из моей базы данных


<DataGrid x:Name="GrdSubjectSched" HorizontalAlignment="Right" AutoGenerateColumns="False"  VerticalAlignment="Top" MaxHeight="325" Width="660" Canvas.Left="10" Canvas.Top="52" Height="320" FontFamily="Times New Roman" >
               <DataGrid.Columns>
                   <DataGridTextColumn Header="ID"   Width="30"/>

                   <DataGridTemplateColumn Header="Saturday"   Width="90">
                       <DataGridTemplateColumn.CellTemplate>
                           <DataTemplate>
                               <TextBlock Text="{Binding Sat}"></TextBlock>
                           </DataTemplate>
                       </DataGridTemplateColumn.CellTemplate>
                       <DataGridTemplateColumn.CellEditingTemplate>
                           <DataTemplate>
                               <ComboBox x:Name="CbSunSubs" SelectedItem="{Binding Sat}"></ComboBox>
                           </DataTemplate>
                       </DataGridTemplateColumn.CellEditingTemplate>
                   </DataGridTemplateColumn>
                   <DataGridTemplateColumn Header="Sunday"   Width="90">
                       <DataGridTemplateColumn.CellTemplate>
                           <DataTemplate>
                               <TextBlock Text="{Binding Sun}"></TextBlock>
                           </DataTemplate>
                       </DataGridTemplateColumn.CellTemplate>
                       <DataGridTemplateColumn.CellEditingTemplate>
                           <DataTemplate>
                               <ComboBox x:Name="CbSunSubs" SelectedItem="{Binding Sun}"></ComboBox>
                           </DataTemplate>
                       </DataGridTemplateColumn.CellEditingTemplate>
                   </DataGridTemplateColumn>
                   <DataGridTemplateColumn Header="Monday"   Width="90">
                       <DataGridTemplateColumn.CellTemplate>
                           <DataTemplate>
                               <TextBlock Text="{Binding Mon}"></TextBlock>
                           </DataTemplate>
                       </DataGridTemplateColumn.CellTemplate>
                       <DataGridTemplateColumn.CellEditingTemplate>
                           <DataTemplate>
                               <ComboBox x:Name="CbMonSubs" SelectedItem="{Binding Mon}"></ComboBox>
                           </DataTemplate>
                       </DataGridTemplateColumn.CellEditingTemplate>
                   </DataGridTemplateColumn>
                   <DataGridTemplateColumn Header="Tuesday"   Width="90">
                       <DataGridTemplateColumn.CellTemplate>
                           <DataTemplate>
                               <TextBlock Text="{Binding Tues}"></TextBlock>
                           </DataTemplate>
                       </DataGridTemplateColumn.CellTemplate>
                       <DataGridTemplateColumn.CellEditingTemplate>
                           <DataTemplate>
                               <ComboBox x:Name="CbTuesSubs" SelectedItem="{Binding Tues}"></ComboBox>
                           </DataTemplate>
                       </DataGridTemplateColumn.CellEditingTemplate>
                   </DataGridTemplateColumn>
                   <DataGridTemplateColumn Header="Wedensday"   Width="90">
                       <DataGridTemplateColumn.CellTemplate>
                           <DataTemplate>
                               <TextBlock Text="{Binding Wed}"></TextBlock>
                           </DataTemplate>
                       </DataGridTemplateColumn.CellTemplate>
                       <DataGridTemplateColumn.CellEditingTemplate>
                           <DataTemplate>
                               <ComboBox x:Name="CbWedSubs" SelectedItem="{Binding Wed}"></ComboBox>
                           </DataTemplate>
                       </DataGridTemplateColumn.CellEditingTemplate>
                   </DataGridTemplateColumn>
                   <DataGridTemplateColumn Header="Thursday"   Width="90">
                       <DataGridTemplateColumn.CellTemplate>
                           <DataTemplate>
                               <TextBlock Text="{Binding Thur}"></TextBlock>
                           </DataTemplate>
                       </DataGridTemplateColumn.CellTemplate>
                       <DataGridTemplateColumn.CellEditingTemplate>
                           <DataTemplate>
                               <ComboBox x:Name="CbThurSubs" SelectedItem="{Binding Thur}"></ComboBox>
                           </DataTemplate>
                       </DataGridTemplateColumn.CellEditingTemplate>
                   </DataGridTemplateColumn>
                   <DataGridTemplateColumn Header="Friday"   Width="90">
                       <DataGridTemplateColumn.CellTemplate>
                           <DataTemplate>
                               <TextBlock Text="{Binding Fri}"></TextBlock>
                           </DataTemplate>
                       </DataGridTemplateColumn.CellTemplate>
                       <DataGridTemplateColumn.CellEditingTemplate>
                           <DataTemplate>
                               <ComboBox x:Name="CbFriSubs" SelectedItem="{Binding Fri}"></ComboBox>
                           </DataTemplate>
                       </DataGridTemplateColumn.CellEditingTemplate>
                   </DataGridTemplateColumn>
               </DataGrid.Columns>

           </DataGrid>




Раньше я заполнял сетку
ObservableCollection<Week>();


а неделя такая
public class Week
    {
        public string Sat { set; get; }
        public string Sun { set; get; }
        public string Mon { set; get; }
        public string Tues { set; get; }
        public string Wed { set; get; }
        public string Thur { set; get; }
        public string Fri { set; get; }
    }




SchedCollection.Add(new Week()
                {
                    Sat = day1,
                    Sun = day2,
                    Mon = day3,
                    Tues = day4,
                    Wed = day5,
                    Thur = day6,
                    Fri = day7

                });
            }
          
            GrdSubjectSched.ItemsSource = SchedCollection;


Что я уже пробовал:

Я перенес данные из базы данных в набор данных

private void FillComboSubjectSelection()
        {

            SelectSubjecDataSet.Clear();
            
            var con1 = new SqlConnection(Connectionstring);
            SqlCommand cmd1;
            cmd1 =new SqlCommand("SELECT Distinct[subname]  FROM [DB_SchoolManager].[dbo].[tbl_week_subjects]",con1);
            SqlDataAdapter da1;
            da1 = new SqlDataAdapter(cmd1);
            da1.Fill(SelectSubjecDataSet);          
            
         
        }


Проблема в том, что я не могу добраться до combobox в datagrid, чтобы заполнить его именем каждую комбинацию в каждом столбце, но я не могу найти ее, когда пишу код

Я хочу, чтобы каждая комбинация содержала те же данные из базы данных, что и запрос ниже

1 Ответов

Рейтинг:
6

Richard MacCutchan

Ваш адаптер данных (da1)объявляется как локальная переменная внутри FillComboSubjectSelection метод. Поэтому, как только этот метод возвращает адаптер данных, он выходит из области действия и больше не существует.