LIST OF

ALTAIR148 08/01/2012 20:31:41
#392689
Boa noite

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.

SAMUKA 08/01/2012 20:49:42
#392690
Olá ALTAIR148

Você pode fazer uso de LINQ para que a LISTA só contenha os campos desejados
ALTAIR148 08/01/2012 21:12:50
#392692
Hum, mas nesse caso meu projeto já tem muita coisa pronta, teria que refazer minhas SQL tudo?
LROSSI 08/01/2012 22:16:07
#392693
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??
SAMUKA 08/01/2012 22:20:12
#392694
Não, bastaria vc aplicar o LINQ sob a variavel LISTA q vc criou, sem precisar mexer no SQL
ALTAIR148 08/01/2012 22:20:56
#392695
Teria um exemplinho básico?
ALTAIR148 08/01/2012 23:40:11
#392697
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?
FOXMAN 09/01/2012 08:37:57
#392699
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

   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.

ALTAIR148 09/01/2012 08:45:09
#392701
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?
FOXMAN 09/01/2012 09:13:21
#392703
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,

Pessoa = new BOPessoa();
PropertyInfo[] propriedades = Pessoa.GetType().GetProperties();


No caso do exemplo acima propriedades conterá uma lista com as propriedades da classe Pessoa.



ALTAIR148 09/01/2012 09:18:25
#392705
Hum... em VB.NET como ficaria?
Página 1 de 2 [17 registro(s)]
Tópico encerrado , respostas não são mais permitidas