Validation not working with RadComboBox

2 posts, 0 answers
  1. Victor
    Victor avatar
    2 posts
    Member since:
    Mar 2019

    Posted 02 Apr Link to this post

    Hi, I created a Validation Class and I using with a RadComboBox that is populated by MySQL but the validation doesn't work. When I populate by RadComboBoxItem it's work.

    Validation.cs:

    namespace Drex.Classes
    {
        public class Validations : ViewModelBase, IDataErrorInfo
        {
            private string _NumeroProcesso;
            private DateTime? _Data;
            private Double? _AreaTerreno;
            private string _Parametro;
            private string _Interessado;
            private string _Endereco;
            private string _AutorProjeto;
            private string _ARTAutorProjeto;
            private string _ResponsavelExecucao;
            private string _ARTResponsavelExecucao;
            private string _ResponsavelAnalise;

            public string NumeroProcesso
            {
                get { return _NumeroProcesso; }
                set { _NumeroProcesso = value; this.OnPropertyChanged("NumeroProcesso"); }
            }

            public DateTime? Data
            {
                get { return _Data; }
                set { _Data = value; this.OnPropertyChanged("Data"); }
            }

            public Double? AreaTerreno
            {
                get { return _AreaTerreno; }
                set { _AreaTerreno = value; this.OnPropertyChanged("AreaTerreno"); }
            }

            public string Parametro
            {
                get { return _Parametro; }
                set { _Parametro = value; this.OnPropertyChanged("Parametro"); }
            }

            public string Interessado
            {
                get { return _Interessado; }
                set { _Interessado = value; this.OnPropertyChanged("Interessado"); }
            }

            public string Endereco
            {
                get { return _Endereco; }
                set { _Endereco = value; this.OnPropertyChanged("Endereco"); }
            }

            public string AutorProjeto
            {
                get { return _AutorProjeto; }
                set { _AutorProjeto = value; this.OnPropertyChanged("AutorProjeto"); }
            }

            public string ARTAutorProjeto
            {
                get { return _ARTAutorProjeto; }
                set { _ARTAutorProjeto = value; this.OnPropertyChanged("ARTAutorProjeto"); }
            }

            public string ResponsavelExecucao
            {
                get { return _ResponsavelExecucao; }
                set { _ResponsavelExecucao = value; this.OnPropertyChanged("ResponsavelExecucao"); }
            }

            public string ARTResponsavelExecucao
            {
                get { return _ARTResponsavelExecucao; }
                set { _ARTResponsavelExecucao = value; this.OnPropertyChanged("ARTResponsavelExecucao"); }
            }

            public string ResponsavelAnalise
            {
                get { return _ResponsavelAnalise; }
                set { _ResponsavelAnalise = value; this.OnPropertyChanged("ResponsavelAnalise"); }
            }


            public Validations(Processo_Type items, bool _selected)
            {
                if (_selected)
                {
                    NumeroProcesso = items.Numero;
                    Data = items.Data;
                    AreaTerreno = 10.2;
                    Parametro = "";
                    Interessado = items.Interessado;
                    Endereco = items.Endereco;
                    AutorProjeto = items.AutorProjeto;
                    ARTAutorProjeto = items.ARTAutorProjeto;
                    ResponsavelExecucao = items.ResponsavelExecucao;
                    ARTResponsavelExecucao = items.ARTResponsavelExecucao;
                    ResponsavelAnalise = items.ResponsavelAnalise;
                }
                else
                {
                    NumeroProcesso = null;
                    Data = null;
                    AreaTerreno = 0.0;
                    Parametro = null;
                    Interessado = null;
                    Endereco = null;
                    AutorProjeto = null;
                    ARTAutorProjeto = null;
                    ResponsavelExecucao = null;
                    ARTResponsavelExecucao = null;
                    ResponsavelAnalise = null;
                }
            }

            public string this[string columnName]
            {
                get
                {
                    Debug.WriteLine(columnName);
                    if ("NumeroProcesso" == columnName)
                    {
                        if (String.IsNullOrEmpty(NumeroProcesso))
                        {
                            return "Favor informar o número do processo";
                        }
                    }

                    if ("Data" == columnName)
                    {
                        if (!_Data.HasValue)
                        {
                            return "Favor informar a data do processo";
                        }
                    }

                    if ("AreaTerreno" == columnName)
                    {
                        if ((AreaTerreno == 0.0) || (!AreaTerreno.HasValue))
                        {
                            return "Favor informar o total da área do terreno";
                        }
                    }

                    if ("Parametro" == columnName)
                    {
                        if (String.IsNullOrEmpty(Parametro))
                        {
                            return "Favor informar um parâmetro";
                        }
                    }

                    if ("Interessado" == columnName)
                    {
                        if (String.IsNullOrEmpty(Interessado))
                        {
                            return "Favor informar o nome do interessado";
                        }
                    }

                    if ("Endereco" == columnName)
                    {
                        if (String.IsNullOrEmpty(Endereco))
                        {
                            return "Favor informar o endereço do projeto";
                        }
                    }

                    if ("AutorProjeto" == columnName)
                    {
                        if (String.IsNullOrEmpty(AutorProjeto))
                        {
                            return "Favor informar o nome do autor do projeto";
                        }
                    }

                    if ("ARTAutorProjeto" == columnName)
                    {
                        if (String.IsNullOrEmpty(ARTAutorProjeto))
                        {
                            return "Favor informar a ART do autor do projeto";
                        }
                    }

                    if ("ResponsavelAnalise" == columnName)
                    {
                        if (String.IsNullOrEmpty(ResponsavelAnalise))
                        {
                            return "Favor informar o nome do responsável pela análise";
                        }
                    }

                    return "";
                }
            }

            public string Error
            {
                get { throw new NotImplementedException(); }
            }
        }

    }

     

     

    .xaml:

                    <telerik:RadComboBox Text="{Binding Parametro, Mode=TwoWay, ValidatesOnDataErrors=True, NotifyOnValidationError=True, ValidatesOnExceptions=True}"
                                         x:Name="Parametro"
                                         VerticalAlignment="Center"
                                         HorizontalAlignment="Stretch" 
                                         HorizontalContentAlignment="Left"
                                         EmptyText="[selecione um parâmetro]" 
                                         IsEditable="True" 
                                         IsReadOnly="True"
                                         DataContext="{StaticResource Parametro_Call}" 
                                         ItemsSource="{Binding Parametros}"
                                         DisplayMemberPath="Parametro" 
                                         SelectedValuePath="IDParametro"/>

     

     

     

  2. Dinko
    Admin
    Dinko avatar
    951 posts

    Posted 05 Apr Link to this post

    Hi Victor,

    Thank you for the provided code snippet. Still, may I ask you to share little more information about your project set up. How is this Validations class used in your application?

    What comes up to my mind is that the DataContext of the Text property is the Parametro_Call.  So the validation property should be declared in this class. I have prepared a sample project to demonstrate this. Give it a try and let me know if I was able to help you with this case.

    Regards,
    Dinko
    Progress Telerik
    Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
Back to Top