How to set the checkbox in the sfdatagrid header to on after initial loading?
Hi
I'm creating a list of files that can be selected in a sfdatagrid using the sample from
https://www.syncfusion.com/forums/125104/how-to-do-checkbox-in-sfdatagrid-header-or-group-header
I wish to extend this sample so that all rows are initially selected and the checkbox is in the header is also selected after the sfdatagrid is loaded with data.
I've been able to set all the checkboxes on from the viewmodel, however I haven't had any luck getting the sfdatagrid.selectall() to work so that the rows are selected and highlighted after the data is loaded. I've tried adding code to the sfdatagrid loaded event without success.
Can you please point me in the right direction?
thanks
Allan
SIGN IN To post a reply.
6 Replies
DY
Deivaselvan Y
Syncfusion Team
December 3, 2018 09:45 AM UTC
Hi Allan,
Thank you for contacting Syncfusion support.
You can achieve your requirement by invoking the SelectAll method in Loaded event of SfDataGrid and override the SelectAll method of GridSelectionController to set value to the Checkbox. Please refer the below sample to meet your requirement to set Checked state to the Checkbox and select all the rows in the DataGrid during initial loading. Try running this sample and let us know if this helps you.
http://www.syncfusion.com/downloads/support/forum/141254/ze/SFDATA~156213210.zip
Regards,
Deivaselvan
Thank you for contacting Syncfusion support.
You can achieve your requirement by invoking the SelectAll method in Loaded event of SfDataGrid and override the SelectAll method of GridSelectionController to set value to the Checkbox. Please refer the below sample to meet your requirement to set Checked state to the Checkbox and select all the rows in the DataGrid during initial loading. Try running this sample and let us know if this helps you.
http://www.syncfusion.com/downloads/support/forum/141254/ze/SFDATA~156213210.zip
Regards,
Deivaselvan
AL
Allan
December 3, 2018 05:15 PM UTC
HI Deivaselvan
Thanks for your reply. I downloaded and ran your sample and then implemented similar logic in my code.
My situation is complicated by an asynchronous data load in the view model. This is being trigger by a window interaction trigger
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding ViewLoaded}" />
</i:EventTrigger>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding ViewLoaded}" />
</i:EventTrigger>
</i:Interaction.Triggers>
which fires an asynchronous data load of the sfdatagrid. When it hits the await statement, the control is released to the datagrid code behind event which initiaties the SelectAll(). Unfortunately the viewmodel hasn't finished loading the data at this point so the RowSelectionDocsController does not have a complete data set. I can get past this problem by forcing the data load to be synchronous however I was hoping to keep the data access asynchronous.
Is it possible to prevent the event in your example from firing until the data load in the view model has completed?
private void Datagrid_Loaded(object sender, RoutedEventArgs e)
{
this.datagrid.SelectAll();
}
{
this.datagrid.SelectAll();
}
Regards
Allan
DY
Deivaselvan Y
Syncfusion Team
December 7, 2018 05:34 AM UTC
Hi Allan,
Thanks for the update.
Kindly share your code implementation on how you are populating the data in ViewModel asynchronously and this may help us to mimic the same at our end to investigate further on this and provide you the appropriate solution at the earliest.
Regards,
Deivaselvan
Thanks for the update.
Kindly share your code implementation on how you are populating the data in ViewModel asynchronously and this may help us to mimic the same at our end to investigate further on this and provide you the appropriate solution at the earliest.
Regards,
Deivaselvan
DY
Deivaselvan Y
Syncfusion Team
December 7, 2018 10:47 AM UTC
Hi Allan,
We have also suspect you may set ItemsSource of the DataGrid asynchronously after loaded the DataGrid control. If this is your case, then you may invoke SelectAll method within the ItemsSourceChanged event of DataGrid as like below code example.
We have also suspect you may set ItemsSource of the DataGrid asynchronously after loaded the DataGrid control. If this is your case, then you may invoke SelectAll method within the ItemsSourceChanged event of DataGrid as like below code example.
|
this.DataGrid.ItemsSourceChanged += DataGrid_ItemsSourceChanged;
private void DataGrid_ItemsSourceChanged(object sender, GridItemsSourceChangedEventArgs e)
{
this.DataGrid.SelectAll();
} |
If still your requirement is not meet with any of our proposed solution, then kindly provide the details as we requested earlier such as asynchronous code implementation of Data population in ViewModel and how it was bind with the DataGrid. Thereby we could analyze further and update you with the appropriate solution at the earliest.
Regards,
Deivaselvan
AL
Allan
December 7, 2018 05:23 PM UTC
Hi Deivaselvan
Your last suggestion to use the itemssourcechanged event has fixed my problem.
I have the itemssource attached to an observable collection that is being loaded asynchronously via the interaction trigger.
Thank you for your help.
Regards
Allan
DY
Deivaselvan Y
Syncfusion Team
December 10, 2018 04:52 AM UTC
Hi Allan,
Thanks for the update.
We are glad to know that your issue has been fixed by handling ItemsSourceChanged event. Please let us know if you need any further assistance.
Regards,
Deivaselvan
Thanks for the update.
We are glad to know that your issue has been fixed by handling ItemsSourceChanged event. Please let us know if you need any further assistance.
Regards,
Deivaselvan
SIGN IN To post a reply.
- 6 Replies
- 2 Participants
-
AL Allan
- Dec 2, 2018 07:41 PM UTC
- Dec 10, 2018 04:52 AM UTC