LIST OF
Boa noite
Pessoal, to com uma dúvida aqui eu uso o seguinte código para preencher um datagrid
Até ai eu consigo tudo bem,. mas dessa forma o meu datagrid carrega todos os campos que tem no DTOPonto, dessa forma eu tenho que ficar deixando algumas colunas como Visible = true. eu queria escolher apenas alguns campos.
Pessoal, to com uma dúvida aqui eu uso o seguinte código para preencher um datagrid
Dim lista As List(Of DTOPonto)
lista = DALPonto.BuscarMarcacao(DTOPonto)
GridMarcados.DataSource = lista
Até ai eu consigo tudo bem,. mas dessa forma o meu datagrid carrega todos os campos que tem no DTOPonto, dessa forma eu tenho que ficar deixando algumas colunas como Visible = true. eu queria escolher apenas alguns campos.
Olá ALTAIR148
Você pode fazer uso de LINQ para que a LISTA só contenha os campos desejados
Você pode fazer uso de LINQ para que a LISTA só contenha os campos desejados
Hum, mas nesse caso meu projeto já tem muita coisa pronta, teria que refazer minhas SQL tudo?
não seria mais viavel remover as colunas que vc não quer que apareça no grid ou fazer o sql somente com os campos desejados??
Não, bastaria vc aplicar o LINQ sob a variavel LISTA q vc criou, sem precisar mexer no SQL
Teria um exemplinho básico?
Bom, uma outra solução que và aqui foi criar um datatable ai dava para definir os campos que o datagrid vai carregar, tirei esse EXEMPLO como base, pelo LINQ seria mais fácil e melhor, ou o datatable criado via código é melhor?
Altair, o complicado disso tudo é o sistema já estar pronto, e ter que ficar fazendo alterações.
E é justamente nesse quisito em que entra o desenvolvimento em camadas.....
Veja abaixo minha função que retorna dados do cadastro de PESSOAS.
Esta função está no DALPessoa
Dessa forma se eu não passar nenhum campo para a função ela retorna os campos padrões.
Já abaixo eu utilizo a mesma função porém passando apenas os campos desejados....
Um detalhe muito importante, eu estou estruturando SPs no meu banco, sendo assim fica fácil eu passar qualquer instrução e obter o retorno desejado.
E é justamente nesse quisito em que entra o desenvolvimento em camadas.....
Veja abaixo minha função que retorna dados do cadastro de PESSOAS.
Esta função está no DALPessoa
public DataSet GetPessoa(string Campos = null, String Condicao = null)
{
Pessoas Pessoa = new Pessoas();
DASql Sql = new DASql();
if(Campos == null)
{
Campos = [Ô]'CODIGO', 'NOME', 'NASCIMENTO', 'CEP', 'ENDERECO', 'NUMERO', 'BAIRRO', 'CIDADE', 'UF', 'FONE', 'CELULAR', 'FAX', 'EMAIL', 'SITE', 'CPF_CNPJ', 'RG_IE', 'TIPO_PESSOA', 'STATUSC', 'OBSERVACAO', 'EMPRESA','Tipo_Cadastro'[Ô];
}
return Sql.Select([Ô]tblcadastros[Ô], Campos, Condicao);
}
Dessa forma se eu não passar nenhum campo para a função ela retorna os campos padrões.
Já abaixo eu utilizo a mesma função porém passando apenas os campos desejados....
ds = Pessoa.GetPessoa([Ô]'CODIGO', 'NOME'[Ô], [Ô] WHERE TIPO_PESSOA = [ô][Ô] + tipopessoa + [Ô][ô][Ô]);
foreach(DataRow row in ds.Tables[0].Rows)
{
itemdata.Id = row[[Ô]Codigo[Ô]].ToString();
itemdata.Nome = row[[Ô]Nome[Ô]].ToString();
combo.Items.Add(itemdata);
}
Um detalhe muito importante, eu estou estruturando SPs no meu banco, sendo assim fica fácil eu passar qualquer instrução e obter o retorno desejado.
Então, trabalhar em camadas eu já trabalho. No seu caso ai se eu não estou enganado esta utilizando dataset.
Nesse Exemplo, ao invés de ter que criar as colunas no dataset via código, teria como pegar os campos que tem na camada DTO?
Nesse Exemplo, ao invés de ter que criar as colunas no dataset via código, teria como pegar os campos que tem na camada DTO?
Não há necessidade de criar as colunas no dataset via código.
Voce consegue através de Reflection obter os campos da camada DTO
Abaixo uma forma de pegar os campos(propriedades) de uma classe,
No caso do exemplo acima propriedades conterá uma lista com as propriedades da classe Pessoa.
Voce consegue através de Reflection obter os campos da camada DTO
Abaixo uma forma de pegar os campos(propriedades) de uma classe,
Pessoa = new BOPessoa();
PropertyInfo[] propriedades = Pessoa.GetType().GetProperties();
No caso do exemplo acima propriedades conterá uma lista com as propriedades da classe Pessoa.
Hum... em VB.NET como ficaria?
Tópico encerrado , respostas não são mais permitidas