Заполните только некоторые столбцы DataView с IEnumerable - PullRequest
0 голосов
/ 27 марта 2012

У меня есть метод, который возвращает 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
                                            });
        }

Даже когда _Persona имеет некоторые другие свойства, я просто хочу вернуть свойства, выбранные в методе.

Проблема в том, что когда я заполняю свой DataView результатами, свойства, которые не установлены, отображаются, и я не хочу этого, поэтому я вручную делаю эти столбцы невидимыми.

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

Есть ли более простой способ сделать то же самое?

1 Ответ

1 голос
/ 27 марта 2012

Ваш dataview автоматически генерирует столбцы на основе данных из вашего класса. Удобный способ скрыть столбцы - использовать атрибут «Browsable» в вашем классе, например:

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

См. Это сообщение для справки.

...