Hierarchical RadGridView Delete just Child

1 Answer 41 Views
GridView
Benedikt
Top achievements
Rank 3
Iron
Iron
Iron
Benedikt asked on 03 Jul 2024, 01:55 PM

Hi,

I have the attached hierarchical RadGridView.

In this I want to implement, that users can delete a single child and also that they can delete a parent.
Now in the way I thought it would work, if you press the Delte Key on the Keyboard, it triggers both events.

Is there a way to prevent this from happening?
And if not, how would I check if the event was triggered by a the child RadGridView or the parent?

 

Greetings,

Benedikt

        <telerik:RadGridView
            Grid.Row="1"
            x:Name="rgvAbschlagsRechnungenAlteSysteme"
            AutoGenerateColumns="False"
            GroupRenderMode="Flat"
            ShowGroupPanel="False"
            FilteringMode="Popup"
            ShowSearchPanel="False"
            CanUserSearch="False"
            ValidatesOnDataErrors="InEditMode"
            ItemsSource="{Binding Daten}"
            AlternationCount="2"
            ActionOnLostFocus="CommitEdit"
            CanUserDeleteRows="True"
            IsSynchronizedWithCurrentItem="True"
            ShowColumnFooters="True"
            SelectionMode="Extended"
            IsPropertyChangedAggregationEnabled="False"
            VirtualizingPanel.VirtualizationMode="Recycling"
            SelectedItem="{Binding selEintrag}"
            NewRowPosition="Top"
            AddingNewDataItem="rgvAbschlagsRechnungenAlteSysteme_AddingNewDataItem"
            RowEditEnded="rgvAbschlagsRechnungenAlteSysteme_RowEditEnded"
            Deleting="rgvAbschlagsRechnungenAlteSysteme_Deleting"
            >
            <telerik:RadGridView.ChildTableDefinitions>
                <telerik:GridViewTableDefinition />
            </telerik:RadGridView.ChildTableDefinitions>
            <telerik:RadGridView.Columns>
                <telerik:GridViewDataColumn
                    DataMemberBinding="{Binding RechnungsNr}"
                    Header="Rechnung Nr."
                    TextWrapping="Wrap"
                    HeaderTextWrapping="Wrap"
                    Width="100"
                    >
                    <telerik:GridViewDataColumn.CellEditTemplate>
                        <DataTemplate>
                            <telerik:RadMaskedTextInput
                                Value="{Binding RechnungsNr, Mode=TwoWay, UpdateSourceTrigger=Explicit}"    
                                maskedInput:MaskedInputExtensions.MaxTextLength="255"
                                Mask=""
                                MinWidth="100"
                                InputBehavior="Insert"
                                IsClearButtonVisible="False"
                                />
                        </DataTemplate>
                    </telerik:GridViewDataColumn.CellEditTemplate>
                    <telerik:GridViewDataColumn.AggregateFunctions>
                        <telerik:CountFunction Caption="Anzahl:  " ResultFormatString="{}{0:N0}" />
                    </telerik:GridViewDataColumn.AggregateFunctions>
                </telerik:GridViewDataColumn>
                <telerik:GridViewComboBoxColumn
                    DataMemberBinding="{Binding RechnungsArt}"
                    Header="Rechnungs-Art"
                    HeaderTextWrapping="Wrap"
                    TextWrapping="Wrap"
                    ItemsSource="{Binding RechnungsArten}"
                    />
                <telerik:GridViewComboBoxColumn
                    DataMemberBinding="{Binding selVertriebsBereich}"
                    Header="Vertriebs-Bereich"
                    HeaderTextWrapping="Wrap"
                    TextWrapping="Wrap"
                    ItemsSourceBinding="{Binding VertriebsBereiche}"
                    DisplayMemberPath="Bezeichnung"
                    FilterMemberPath="selVertriebsBereich.Bezeichnung"
                    SortMemberPath="selVertriebsBereich.Bezeichnung"
                    />
                <telerik:GridViewDataColumn
                    DataMemberBinding="{Binding DebitorenNummer}"
                    Header="Debitoren Nr."
                    TextWrapping="Wrap"
                    HeaderTextWrapping="Wrap"
                    Width="100"
                    >
                    <telerik:GridViewDataColumn.CellEditTemplate>
                        <DataTemplate>
                            <telerik:RadMaskedTextInput
                                Value="{Binding DebitorenNummer, Mode=TwoWay, UpdateSourceTrigger=Explicit}"    
                                maskedInput:MaskedInputExtensions.MaxTextLength="255"
                                Mask=""
                                MinWidth="100"
                                InputBehavior="Insert"
                                IsClearButtonVisible="False"
                                />
                        </DataTemplate>
                    </telerik:GridViewDataColumn.CellEditTemplate>
                </telerik:GridViewDataColumn>
                <telerik:GridViewDataColumn
                    DataMemberBinding="{Binding FirstAuftrag.Objekt}"
                    Header="Objekt"
                    IsReadOnly="True"
                    TextWrapping="Wrap"
                    HeaderTextWrapping="Wrap"
                    Width="200"
                    />
                <telerik:GridViewDataColumn 
                    DataMemberBinding="{Binding FirstAuftrag.BA}"
                    Header="BA-Nr."
                    IsReadOnly="True"
                    TextWrapping="Wrap"
                    HeaderTextWrapping="Wrap"
                    Width="155"
                    />
                <telerik:GridViewColumn 
                    UniqueName="AuftragHinzufügenButton"
                    Header="Auftrag hinzufügen"
                    IsReadOnly="True"
                    TextWrapping="Wrap"
                    HeaderTextWrapping="Wrap"
                    FilterMemberPath="BA"
                    Width="180"
                    >
                    <telerik:GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <telerik:RadButton 
                                Content="Auftrag hinzufügen"
                                Command="{Binding AuftragHinzufügenCommand}" 
                                />
                        </DataTemplate>
                    </telerik:GridViewColumn.CellTemplate>
                </telerik:GridViewColumn>
            </telerik:RadGridView.Columns>
            <telerik:RadGridView.HierarchyChildTemplate>
                <DataTemplate>
                    <telerik:RadGridView 
                        AutoGenerateColumns="False"
                        GroupRenderMode="Flat"
                        ShowGroupPanel="False"
                        FilteringMode="Popup"
                        ShowSearchPanel="False"
                        CanUserSearch="False"
                        ValidatesOnDataErrors="InEditMode"
                        ItemsSource="{Binding Aufträge}"
                        AlternationCount="2"
                        ActionOnLostFocus="CommitEdit"
                        CanUserDeleteRows="True"
                        IsSynchronizedWithCurrentItem="True"
                        ShowColumnFooters="False"
                        SelectionMode="Extended"
                        IsPropertyChangedAggregationEnabled="False"
                        VirtualizingPanel.VirtualizationMode="Recycling"
                        Deleting="RadGridView_Deleting"
                        >
                        <telerik:RadGridView.Columns>
                            <telerik:GridViewDataColumn
                                DataMemberBinding="{Binding Objekt}"
                                Header="Objekt"
                                IsReadOnly="True"
                                TextWrapping="Wrap"
                                HeaderTextWrapping="Wrap"
                                Width="200"
                                />
                            <telerik:GridViewDataColumn 
                                DataMemberBinding="{Binding BA}"
                                Header="BA-Nr."
                                IsReadOnly="True"
                                TextWrapping="Wrap"
                                HeaderTextWrapping="Wrap"
                                Width="155"
                                />
                        </telerik:RadGridView.Columns>
                    </telerik:RadGridView>
                </DataTemplate>
            </telerik:RadGridView.HierarchyChildTemplate>
            <telerik:RadGridView.SortDescriptors>
                <telerik:ColumnSortDescriptor Column="{Binding Columns[\RechnungsNr], ElementName=rgvAbschlagsRechnungenAlteSysteme}" SortDirection="Ascending"/>
            </telerik:RadGridView.SortDescriptors>
        </telerik:RadGridView>


1 Answer, 1 is accepted

Sort by
1
Accepted
Martin Ivanov
Telerik team
answered on 04 Jul 2024, 10:56 AM

Hello Benedikt,

The described behavior occurs because Deleting is a routed event and its routing strategy is Bubbling. This means that the event will bubble to any parent visual subscribed to the same event. To prevent this, you can handle the Deleting event in the handler of the child RadGridView (RadGridView_Deleting).

  private void RadGridView_Deleting(object sender, GridViewDeletingEventArgs e)
  {
      e.Handled = true;
  }

In case you need to get the element that started the event, you can use the e.OriginalSource property. For example:

 private void rgvAbschlagsRechnungenAlteSysteme_Deleting(object sender, GridViewDeletingEventArgs e)
 {
    var origin = (RadGridView)e.OriginalSource;
 }

I hope that helps.

Regards,
Martin Ivanov
Progress Telerik

Love the Telerik and Kendo UI products and believe more people should try them? Invite a fellow developer to become a Progress customer and each of you can get a $50 Amazon gift voucher.

Benedikt
Top achievements
Rank 3
Iron
Iron
Iron
commented on 04 Jul 2024, 01:50 PM

Hi Martin,
I feel a little dumb now for not trying e.Handled = true
Thanks for the solution :) 

 

Greetings

Tags
GridView
Asked by
Benedikt
Top achievements
Rank 3
Iron
Iron
Iron
Answers by
Martin Ivanov
Telerik team
Share this question
or