0

I have a method which returns an IEnumerable of some custom type.

 public IEnumerable<_Persona> RegresaBusquedaPersona(string nombres)
        {
            return context.personas.Where(x => x.Nombres.Contains(nombres) ||
                                            x.ApellidoP.Contains(nombres) ||
                                            x.ApellidoM.Contains(nombres))
                                            .Select(x => new _Persona
                                            {
                                                Id = x.IDPersona,
                                                Nombres = x.Nombres,
                                                ApellidoP = x.ApellidoP,
                                                ApellidoM = x.ApellidoM,
                                                FechaNacimiento = x.FechaNacimiento
                                            });
        }

Even when _Persona has some other properties I just want to return the properties chosen in the method.

The problem is that when I fill my DataView with results, properties that aren't set they are being displayed and I don't want this, so I manually make these columns not visible.

public void LLenarDataView(IEnumerable<_Persona> personas)
        {
            _listaPersonas.DataSource = personas;
            _listaPersonas.Columns["Sexo"].Visible = false;
            _listaPersonas.Columns["Rfc"].Visible = false;
            _listaPersonas.Columns["Curp"].Visible = false;
            _listaPersonas.Columns["EstadoCivil"].Visible = false;
            _listaPersonas.Columns["Direccion"].Visible = false;
            _listaPersonas.Columns["Cp"].Visible = false;
            _listaPersonas.Columns["Delegacion"].Visible = false;
            _listaPersonas.Columns["Email"].Visible = false;
            _listaPersonas.Columns["Telefono"].Visible = false;
            _listaPersonas.Columns["Celular"].Visible = false;
            _listaPersonas.Columns["Empresa"].Visible = false;
            _listaPersonas.AutoResizeColumns();
        }

Is there a simpler way of doing the same?

Jorge Zapata
  • 2,316
  • 1
  • 30
  • 57

1 Answers1

1

Your dataview automatically generates columns based on data from your class. Neat way to hide columns is to use "Browsable" attribute in your class like this:

[Browsable(false)]
public string MyString { get;set;}

See this so post for reference.

Community
  • 1
  • 1
Dmitry Reznik
  • 6,812
  • 2
  • 32
  • 27