Раскрывающийся список пуст в режиме редактирования / создания в DataGrid - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть эта таблица данных, и в строках, где есть данные, есть также данные в комбинированном списке, но когда я хочу добавить новую строку, комбинированный список пуст. Есть ли способ обойти это, чтобы были данные, когда я добавляю новую строку в сетку данных?

  <DataGrid x:Name="po"  ItemsSource="{Binding dækning}" Grid.Column="9" Grid.Row="1" Grid.RowSpan="3" 
      Grid.ColumnSpan="3" AutoGenerateColumns="False" AddingNewItem="Bladdaeking_AddingNewItem"  
       CellEditEnding="Bladdaeking_CellEditEnding">
                        <DataGrid.Columns>
                            <DataGridTemplateColumn  Header="Post nr">
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding Postby}"></TextBlock>
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                                <DataGridTemplateColumn.CellEditingTemplate>
                                    <DataTemplate >
                                        <ComboBox   ItemsSource="{Binding TblPostNrs}" 
                               DisplayMemberPath="PostNr" ></ComboBox>
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellEditingTemplate>
                            </DataGridTemplateColumn>
                            <DataGridTemplateColumn Header="Dækning">
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding DaekningsGrad1}"></TextBlock>
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                               </DataGridTemplateColumn>
                            <DataGridTemplateColumn Header="Post by">
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding Postby}"></TextBlock>
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>
                            <DataGridTextColumn Header="Oplag">

                            </DataGridTextColumn>
                        </DataGrid.Columns>


                    </DataGrid>

Это объект, который DataGrid принимает в


    public class Bladdaeknik
    {
        private int BladID;
        private int Oplag;
        private int DaekningsGrad;
           private int PostNr;
        private string postby;
       public int DaekningsGrad1 { get => DaekningsGrad; set => DaekningsGrad = value; }
       public int PostNr1 { get => PostNr; set => PostNr = value; }
       public int Oplag1 { get => Oplag; set => Oplag = value; }
       public int BladID1 { get => BladID; set => BladID = value; }
       public string Postby { get => postby; set => postby = value; }
       public List<daos.PostNrModel> TblPostNrs { get;  set; }
     }

Икод на странице * .xaml.cs


      private void AddBladDaeknignToDataGrid(int stamBladid)
     {
          var res = BladDækningDao.GetDækningGradByBladId(stamBladid);
           res.Add(new Bladdaeknik() {
           BladID1 = stamBlad.BladID
          });    
           po.DataContext = new { dækning = res };    
          da.DataSource = BladDækningDao.GetDækningGradByBladId(stamBladid);
      }

1 Ответ

0 голосов
/ 30 сентября 2019

Daekning - это коллекция Bladdaeknik.

Таким образом, текст данных каждого ряда является одним из этих Bladdaeknik.

Когда вы добавляете, это тоже верно. Новый экземпляр одного из этих Bladdaeknik будет создан.

Текст данных этого комбо в новом ряду - ваш новый Bladdaeknik.

Если вы хотите, чтобы некоторые TblPostNrs отображались в качестве опций, то вам нужно настроить их в конструкторе Bladdaeknik для новогоэкземпляр. Для тех, которые вы редактируете, вы можете пойти с этим или заменить их другими, так как вы можете перевести свои данные из базы данных в эту модель представления.

Или связать с коллекцией в другом месте, используя ресурс или родственник или что-то подобное, чтобы предоставить один список из них для всех строк.

В зависимости от вашего требования.

 public class Bladdaeknik
 {
     public Bladdaeknik()
     {
         // Fill this.TblPostNrs with data
     }

(Извините, если я что-то там неправильно написал).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...