コード例 #1
0
        /// <summary>
        /// Validates a grid row
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tableViewDetail_ValidateRow(object sender, DevExpress.Xpf.Grid.GridRowValidationEventArgs e)
        {
            WaterMeterViewModel vm  = this.DataContext as WaterMeterViewModel;
            WaterMeterReading   row = e.Row as WaterMeterReading;

            try
            {
                if (null != row)
                {
                    // Rule-1:  All required fields must contain data
                    string results = ValidationRules.IsWaterMeterReadingRowValid((WaterMeterReading)e.Row);
                    if (!String.IsNullOrEmpty(results))
                    {
                        e.IsValid      = false;
                        e.ErrorType    = DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical;
                        e.ErrorContent = "The highlighted field cannot be blank";
                        e.SetError(e.ErrorContent);
                        return;
                    }
                    // Rule-2: Meter Reading must be greater than previous reading.
                    //if (row.ReadingDate <= vm.SelectedProperty.LastMeterEntry.ReadingDate ||
                    //    row.MeterReading <= vm.SelectedProperty.LastMeterEntry.MeterReading)
                    if (row.ReadingDate <= vm.SelectedProperty.ReadingDate ||
                        row.MeterReading <= vm.SelectedProperty.MeterReading)
                    {
                        e.IsValid      = false;
                        e.ErrorType    = DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical;
                        e.ErrorContent = "The highlighted field cannot be less then the previous reading";
                        e.SetError(e.ErrorContent);
                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Row Error: " + ex.Message);
            }
            finally
            {
                if (e.IsValid)
                {
                    //row.Consumption = vm.CalculateWaterConsumption();
                    //row.PropertyID = vm.SelectedProperty.PropertyID; // assign the PropertID since it's a FK
                }
                e.Handled = true;
            }
        }