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

Datagrid принимает текущее значение после редактирования ячейки


Моя сетка уже заполнена данными но когда я меняю метку и нажимаю submit direct она принимает старое значение
если я нажал enter и нажал submit он примет новое значение
Мне нужно принять новое значение, если я нажму кнопку отправить напрямую
пожалуйста, найдите ниже весь используемый код

компонента DataGrid:

<DataGrid x:Name="GrdExamCheck" AutoGenerateColumns="False" HorizontalAlignment="Left" Background="{x:Null}" VerticalAlignment="Stretch" Canvas.Top="10" FontFamily="Times New Roman" Width="997" FontWeight="Bold" Canvas.Left="10"   >
                <DataGrid.CellStyle>
                    <Style TargetType="DataGridCell">
                        <Setter Property="TextBlock.TextAlignment" Value="Center"/>
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type DataGridCell}">
                                    <Grid Background="{TemplateBinding Background}">
                                        <ContentPresenter VerticalAlignment="Bottom"/>
                                    </Grid>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </DataGrid.CellStyle>
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Student ID" Visibility="Hidden" Binding="{Binding StuId}"/>
                    <DataGridTemplateColumn Header="Student" Width="180" IsReadOnly="True">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <Image Source="{Binding StuImage}" Width="50" Height="50" />
                                    <TextBlock Text="{Binding StuName}" VerticalAlignment="Bottom" FontFamily="Times New Roman" FontWeight="Bold" FontSize="13"/>
                                </StackPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTextColumn Header="Mark" Width="100" Binding="{Binding CheckMark}"></DataGridTextColumn>
                    <DataGridTemplateColumn Header="Factor" Width="100" IsReadOnly="True">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="{Binding Factor}" TextAlignment="Center"  VerticalAlignment="Bottom" FontFamily="Times New Roman" FontWeight="Bold" FontSize="13"/>
                                </StackPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Header="Versions" Width="100" IsReadOnly="True">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="{Binding CheckUpdated}" VerticalAlignment="Bottom" TextAlignment="Center"  FontFamily="Times New Roman" FontWeight="Bold" FontSize="13"/>
                                </StackPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Header="Remark" Width="200" >
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <TextBox Text="{Binding Remark}" VerticalAlignment="Bottom"  HorizontalAlignment="Stretch" FontFamily="Times New Roman" FontWeight="Bold" FontSize="13" Foreground="Black" BorderBrush="{x:Null}" Background="{x:Null}"/>
                                </StackPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Header="Absent" Width="70">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <Button x:Name="BtnAbsent" Content=""  Width="40" Height="40" BorderBrush="{x:Null}" Click="BtnAbsent_Click" >
                                    <Button.Background>
                                        <ImageBrush ImageSource="/School Manager v001;component/Pics/absent.ico" Stretch="Uniform"/>
                                    </Button.Background>
                                </Button>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Header="Submit" Width="70">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <Button x:Name="BtnSubmit" Content=""  Width="40" Height="40" BorderBrush="{x:Null}" Click="BtnSubmit_Click" >
                                    <Button.Background>
                                        <ImageBrush ImageSource="/School Manager v001;component/Pics/submitMark.ico" Stretch="Uniform"/>
                                    </Button.Background>
                                </Button>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Header="Attach" Width="70">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <Button x:Name="BtnAttach" Content=""  Width="40" Height="40" BorderBrush="{x:Null}" Click="BtnAttach_Click" >
                                    <Button.Background>
                                        <ImageBrush ImageSource="/School Manager v001;component/Pics/attachment.ico" Stretch="Uniform"/>
                                    </Button.Background>
                                </Button>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                </DataGrid.Columns>
            </DataGrid>





Отправить код клика :

var mark = GrdExamCheck.CurrentItem as Mark;
            if (mark != null)
            {
                InsertMark(int.Parse(LbExamIdContent.Content.ToString()), mark.StuId, DateTime.Now.ToShortDateString(), mark.Remark, Convert.ToDecimal(mark.CheckMark), Convert.ToDecimal(LbFactorContent.Content.ToString()));
            }
            FillClassStudentList(int.Parse(LbCLassIdContent.Content.ToString()));




Класс метки для привязки:

public class Mark
   {
       public int CheckId { set; get; }
       public int StuId { set; get; }
       public string StuName { set; get; }
       public string Date { set; get; }
       public int ExamId { set; get; }
       public string CheckMark { set; get; }
       public decimal Factor { set; get; }
       public string Remark { set; get; }
       public int StuPicid { set; get; }
       public BitmapImage StuImage { set; get; }
       public string CheckUpdated { get; set; }
   }



Пожалуйста ребята помогите

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

я попробовал код щелчка и попытался обновить элемент сетки
также я попытался получить currentitem
но это не сработало

2 Ответов

Рейтинг:
2

Gerry Schmitz

Это требует, чтобы вы "проследили" все события, которые "генерируются" в любом случае (tab click против no tab and click), поняли их, а затем добавили соответствующее "исправление".

Никто не поможет вам, если они не прошли точно такой же сценарий (очень маловероятно). У вас нет другого выбора, кроме как делать больше чтения / тестирования и обучать себя. Вот связанный пост, который передает тип информации, с которой вам нужно ознакомиться, если вы планируете куда-то попасть (re: таблицы данных и редактирование).

WPF DataGrid CellEditEnding - набор данных не обновляется до тех пор, пока строка не потеряет фокус - переполнение стека[^]


Рейтинг:
1

Rabee3-F1.787545

Binding="{Binding CheckMark,UpdateSourceTrigger=PropertyChanged}"