wpf Gridview selection enabling

1 Answer 18 Views
GridView
Zulaykho
Top achievements
Rank 2
Zulaykho asked on 11 Mar 2025, 06:22 AM
Hello everyone!
I am using Telerik in my wpf app(.NET 8.0). There is a RadGridView and the selection mode is multiple. I have a Checkbox(GridViewSelectionColumn) in the first column. And in my model there is a field IsSelectable. now my question is, how can i make the Selection enabled or disabled according to this field? When the IsSelectable is False the whole row should be disabled to select. and vise versa. Here is my current code:
<!--  Main data grid  -->
<telerik:RadGridView
Name="GridView"
Grid.Row="1"
Margin="3"
DataContext="{Binding Requests}"
ItemsSource="{Binding}"
ShowGroupPanel="False"
SelectionMode="Multiple"
SelectionUnit="FullRow"

>
<telerik:RadGridView.Columns>
<telerik:GridViewSelectColumn />

<telerik:GridViewDataColumn DataMemberBinding="{Binding Path=Id}" Header="{DynamicResource 100314}" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Path=Branch}" Header="{DynamicResource 100214}" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Path=OperName}" Header="{DynamicResource 100315}" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Path=OperRefer}" Header="{DynamicResource 100316}" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Path=CrtUsr}" Header="{DynamicResource 100317}" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Path=CrtDtm}" Header="{DynamicResource 100318}" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Path=SndUsr}" Header="{DynamicResource 100319}" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Path=SndDtm}" Header="{DynamicResource 100320}" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Path=Status}" Header="{DynamicResource 100242}" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Path=Remark}" Header="{DynamicResource 100114}" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Path=RetCode}" Header="{DynamicResource 100321}" />
</telerik:RadGridView.Columns>

<telerik:EventToCommandBehavior.EventBindings>
<!-- Scroll event (RowLoaded) -->
<telerik:EventBinding
Command="{Binding DataContext.ScrollCommand, RelativeSource={RelativeSource AncestorType=UserControl}}"
EventName="RowLoaded"
PassEventArgsToCommand="True"
RaiseOnHandledEvents="True" />
</telerik:EventToCommandBehavior.EventBindings>

</telerik:RadGridView>

1 Answer, 1 is accepted

Sort by
0
Stenly
Telerik team
answered on 12 Mar 2025, 04:59 PM

Hello Zulaykho,

The RadGridView control does not provide a property on the row level to dictate if a selection is allowed or not. Instead, the available API can be used to achieve this requirement. 

More specifically, to prevent a selection when the IsSelectable property from your model instance is False, the SelectionChanging event of RadGridView could be utilized. In it, the current item that is going to be selected can be retrieved from the AddedItems collection of the event arguments and if its IsSelectable property is False, the Cancel property of the arguments can be set to True.

The following code snippet showcases this suggestion's implementation:

private void RadGridView_SelectionChanging(object sender, SelectionChangingEventArgs e)
{
    if (e.AddedItems.Count > 0)
    {
        Request request = (Request)e.AddedItems[0];

        if (!request.IsSelectable)
        {
            e.Cancel = true;
        }
    }
}

With this being said, I attached a sample project for you to test, so, could you give it a try and let me know how it goes?

Regards,
Stenly
Progress Telerik

Enjoyed our products? Share your experience on G2 and receive a $25 Amazon gift card for a limited time!

Tags
GridView
Asked by
Zulaykho
Top achievements
Rank 2
Answers by
Stenly
Telerik team
Share this question
or