2012-03-27 5 views
0

J'ai une méthode qui retourne un IEnumerable de certains types personnalisés.Remplissez juste quelques colonnes DataView avec IEnumerable

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 
              }); 
     } 

Même si _Persona a d'autres propriétés, je veux juste retourner les propriétés choisies dans la méthode. Le problème est que lorsque je remplis mon DataView avec des résultats, les propriétés qui ne sont pas définies sont affichées et je ne veux pas cela, donc je rends ces colonnes manuellement non visibles.

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(); 
     } 

Existe-t-il une façon plus simple de faire la même chose?

Répondre

1

Votre vue de données génère automatiquement des colonnes en fonction des données de votre classe. Élégante façon de cacher des colonnes est d'utiliser l'attribut « Browsable » dans votre classe comme ceci:

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

Voir ce si post pour référence.

+0

Je ne connaissais pas cet attribut, merci. –

+0

Vous êtes les bienvenus :) –

Questions connexes