TRANSFERIR LIST T PARA UM DATATABLE

LUISCAMPANA12 28/01/2013 17:09:02
#418236
PESSOAL BOA TARDE , SEGUE O CÓDIGO ABAIXO EM QUE FIZ NO SISTEMA QUE ESTOU TENTANDO DESENVOLVER.. O PROBLEMA é O SEGUINTE .. EU PRECISO TRANSFORMAR A LIST EM DATATABLE PARA DEVOLVER PARA O SISTEMA E CARREGAR NO DATAGRID.!

SE POSSIVEL ALGUMA AJUDA SERIA MTO GRATO.! DESDE JÁ OBRIGADO
public DataTable carrega_novo_pedido(int id)
{
string vsql = [Ô]SELECT id,item,descricao,unidade,quant,valor FROM item_pedido where id_pedido = @idpedido[Ô];
SqlCommand sqlcmd = null;

if (this.conectar())
{
sqlcmd = new SqlCommand(vsql, objcon);
sqlcmd.Parameters.AddWithValue([Ô]idpedido[Ô], id);
using (SqlDataReader dr = sqlcmd.ExecuteReader())
{
if (dr.HasRows)
{
//id,item,descricao,unidade,quant,valor
List<PedidoItem> pedido = new List<PedidoItem>();
while (dr.Read())
{
PedidoItem item = new PedidoItem();
item.Id = dr.GetInt32(dr.GetOrdinal([Ô]id[Ô]));
item.Item = dr.GetInt32(dr.GetOrdinal([Ô]item[Ô]));
item.Descricao = dr.GetString(dr.GetOrdinal([Ô]descricao[Ô]));
item.Unidade = dr.GetString(dr.GetOrdinal([Ô]unidade[Ô]));
item.Quant = dr.GetInt32(dr.GetOrdinal([Ô]quant[Ô]));
item.Valor = dr.GetFloat(dr.GetOrdinal([Ô]valor[Ô]));


pedido.Add(item);
}
}
}
KERPLUNK 28/01/2013 17:14:21
#418239
Resposta escolhida
Você pode simplesmente passar o List<T> para o DataGrid, não há necessidade de se transformar em um DataTable...
JABA 28/01/2013 17:17:56
#418240
DataGrid1.DataSource = Pedido;

vlw
LUISCAMPANA12 28/01/2013 17:27:29
#418244
mais no caso.. esse código está dentro de uma classe eu preciso passar algum retorno para o form ..

qual seria o retorno :??

no caso teria que alterar la em cima colocar public void ? ? ?


e no return seria null ? ? ?

Obrigado desde já
e Kerp mandei um email para ti no gmail cara.. se possivel da uma olhadinha la dps
KERPLUNK 28/01/2013 17:43:13
#418247
public List<PedidoItem> carrega_novo_pedido(int id)

Ao terminar o loop para preencher a lista:
return pedido;
LUISCAMPANA12 28/01/2013 17:51:46
#418249
VEJAM AGORA ELE FICOU ASSIM, ENTRETANTO , QUANDO COMPILO ELE TA O ERRO POIS O RETURN DEVE ESTAR LA EM BAIXO ANTES DO FINAL DO MéTODO.... MAIS COMO O PEDIDO ESTRA DENTRO DO WHILE NAO CONSIGO CHAMALO LA EM BAIXO.!

ALGUMA SOLUÇÃO ? ?


public List<PedidoItem> carrega_novo_pedido(int id)
{
string vsql = [Ô]SELECT id,item,descricao,unidade,quant,valor FROM item_pedido where id_pedido = @idpedido[Ô];
SqlCommand sqlcmd = null;

if (this.conectar())
{
sqlcmd = new SqlCommand(vsql, objcon);
sqlcmd.Parameters.AddWithValue([Ô]idpedido[Ô], id);
using (SqlDataReader dr = sqlcmd.ExecuteReader())
{
if (dr.HasRows)
{
//id,item,descricao,unidade,quant,valor
List<PedidoItem> pedido = new List<PedidoItem>();
while (dr.Read())
{
PedidoItem item = new PedidoItem();
item.Id = dr.GetInt32(dr.GetOrdinal([Ô]id[Ô]));
item.Item = dr.GetInt32(dr.GetOrdinal([Ô]item[Ô]));
item.Descricao = dr.GetString(dr.GetOrdinal([Ô]descricao[Ô]));
item.Unidade = dr.GetString(dr.GetOrdinal([Ô]unidade[Ô]));
item.Quant = dr.GetInt32(dr.GetOrdinal([Ô]quant[Ô]));
item.Valor = dr.GetFloat(dr.GetOrdinal([Ô]valor[Ô]));


pedido.Add(item);

}
return pedido;
}

}
}
}
KERPLUNK 28/01/2013 17:57:20
#418251
  
public List<PedidoItem> carrega_novo_pedido(int id)
{
[txt-color=#e80000]List<PedidoItem> _return = null;[/txt-color]
string vsql = [Ô]SELECT id,item,descricao,unidade,quant,valor FROM item_pedido where id_pedido = @idpedido[Ô];
SqlCommand sqlcmd = null;

if (this.conectar())
{
sqlcmd = new SqlCommand(vsql, objcon);
sqlcmd.Parameters.AddWithValue([Ô]idpedido[Ô], id);
using (SqlDataReader dr = sqlcmd.ExecuteReader())
{
if (dr.HasRows)
{
//id,item,descricao,unidade,quant,valor
List<PedidoItem> pedido = new List<PedidoItem>();
if (dr.HasRows)
{
_return = new List<PedidoItem>();
while (dr.Read())
{
PedidoItem item = new PedidoItem();
item.Id = dr.GetInt32(dr.GetOrdinal([Ô]id[Ô]));
item.Item = dr.GetInt32(dr.GetOrdinal([Ô]item[Ô]));
item.Descricao = dr.GetString(dr.GetOrdinal([Ô]descricao[Ô]));
item.Unidade = dr.GetString(dr.GetOrdinal([Ô]unidade[Ô]));
item.Quant = dr.GetInt32(dr.GetOrdinal([Ô]quant[Ô]));
item.Valor = dr.GetFloat(dr.GetOrdinal([Ô]valor[Ô]));

[txt-color=#e80000]_return.Add(item);[/txt-color]
[txt-color=#e80000]//pedido.Add(item);[/txt-color]

}
}

}
}
[txt-color=#e80000]return _return;[/txt-color]
}


A propósito, não recebi nada no meu e-mail, mas de preferência, dúvidas, somente aqui no fórum, ok?
LUISCAMPANA12 30/01/2013 11:06:47
#418362
Kerp fiz a alteração porém .. agora ele segue com o seguinte erro

public List<PedidoItem> carrega_novo_pedido(int id)
{
string vsql = [Ô]SELECT id,item,descricao,unidade,quant,valor FROM itens_pedido where id_pedido = @idpedido[Ô];
SqlCommand sqlcmd = null;

if (this.conectar())
{
List<PedidoItem> _retorno = new List<PedidoItem>();
sqlcmd = new SqlCommand(vsql, objcon);
sqlcmd.Parameters.AddWithValue([Ô]idpedido[Ô], id);
using (SqlDataReader dr = sqlcmd.ExecuteReader())
{
if (dr.HasRows)
{
//id,item,descricao,unidade,quant,valor
//List<PedidoItem> pedido = new List<PedidoItem>();
while (dr.Read())
{
PedidoItem item = new PedidoItem();
item.Id = dr.GetInt32(dr.GetOrdinal([Ô]id[Ô]));
item.Item = dr.GetInt32(dr.GetOrdinal([Ô]item[Ô]));
item.Descricao = dr.GetString(dr.GetOrdinal([Ô]descricao[Ô]));
item.Unidade = dr.GetString(dr.GetOrdinal([Ô]unidade[Ô]));
[txt-color=#e80000] item.Quant = dr.GetInt32(dr.GetOrdinal([Ô]quant[Ô])); <-- Specified cast is not valid. [/txt-color]
item.Valor = dr.GetFloat(dr.GetOrdinal([Ô]valor[Ô]));

_retorno.Add(item);
}
}
}
return _retorno;
}
else
{
return null;
}
}


o campo quantidade é do tipo float.!!... se vcs puderem me ajudar.!!

vlw
KERPLUNK 30/01/2013 12:16:36
#418374
Qual o tipo de dados do campo [Ô]quant[Ô]? Tem que ser um tipo de dados compatível com Int32, que deve ser um inteiro entre -2.147.483.648 e 2.147.483.647
LUISCAMPANA12 30/01/2013 12:17:55
#418376
é do tipo float
KERPLUNK 30/01/2013 12:24:30
#418379
Então, a propriedade [Ô]Quant[Ô], deve ser do tipo de dados double e você deve usar o método GetDouble para buscar o valor.
Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas