Category / Section
How to validate all the cell values in WPF DataGrid (SfDataGrid) in button click?
1 min read
The validation occurs in WPF DataGrid (SfDataGrid) during the cell's end edit. You can validate the cell value in button click by using ICommand interface.
<syncfusion:SfDataGrid x:Name="sfDataGrid"
AllowEditing="True"
SelectionMode="Single"
NavigationMode="Cell"
ItemsSource="{Binding Orders}"
AutoGenerateColumns="False">
<syncfusion:SfDataGrid.Columns>
<syncfusion:GridTextColumn HeaderText="Order ID" MappingName="OrderID"/>
<syncfusion:GridTextColumn HeaderText="Customer ID" MappingName="CustomerID" />
<syncfusion:GridTextColumn HeaderText="Customer Name" MappingName="CustomerName" />
<syncfusion:GridTextColumn HeaderText="Country" MappingName="Country" />
<syncfusion:GridCurrencyColumn HeaderText="Unit Price" MappingName="UnitPrice"/>
</syncfusion:SfDataGrid.Columns>
</syncfusion:SfDataGrid>
<StackPanel Grid.Column="1">
<Button Content="Validate Cell Value" Width="100" Height="50"
Command="{Binding Path=DataContext.RowDataCommand,ElementName=sfDataGrid}"
CommandParameter="{Binding ElementName=sfDataGrid}"/>
</StackPanel>
public void ChangeCanExecute(object obj)
{
var datagrid = (obj as SfDataGrid);
//Here customize condition based cell validation
foreach (var record in datagrid.View.Records)
{
if ((record.Data as OrderInfo).UnitPrice == 0)
{
MessageBox.Show("Invalid value in OrderID: " + (record.Data as OrderInfo).OrderID);
Setter setter = new Setter();
setter.Property = GridCell.BackgroundProperty;
setter.Value = Brushes.Red;
var style = new Style(typeof(GridCell));
DataTrigger dataTrigger = new DataTrigger();
dataTrigger.Binding = new Binding("UnitPrice");
dataTrigger.Value = (double?)000;
dataTrigger.Setters.Add(setter);
style.Triggers.Add(dataTrigger);
datagrid.Columns["UnitPrice"].CellStyle = style;
}
}
}
