Jump to content

Archived

This topic is now archived and is closed to further replies.

Wilson R Dutra

- Session, datatables e Array em C# -

Recommended Posts

olá pessoal! Estou com duas variáveis de sessão onde a primeira recebe um array com nomes de campos (de um datatable) e posteriormente eu utilizo a sessão jogando-a novamente para um array. Até aí funciona perfeitamente. Meu maior problema é o seguinte: tenha a mesma condição, porém meu datatable contém N rows, enquanto o primeiro que comentei possuía apenas uma row. Não estou conseguindo jogar das sessão o meu dataTable que está na Sessão para um array. No primeiro vai fácil e no segundo nada rola. O que estou fazendo é://Aqui funcuina perfeitamente. É uma sessão com m array[2][7]oImpostos = (object[][])Session["oImpostos"];//Aqui já não funciona. É o mesmo tamanho mas com N rowsoImpostosTela = (object[][])Session["TempImpostos"];Por favor me ajudem. Onde estou errando? Preciso resolver este impasse para poder realizar o update em minha base. Precisio muito da ajuda dos amihgosMuito gratoWilson R Dutra

Share this post


Link to post
Share on other sites

Olá amigo. de certa forma foi isso que acabei fazendo mesmo e até certo ponto funciona, agora o meu problema é o seguinte. Eu tenho um datatable que é o real onde chamo de odtImpostos. Este DataTable incialmente estará vazio para que eu possa guardar meus novos valores, ok? Em seguida tenho um outro DataTable a que chamo de oImpTela que é o que comentei na primeira mensagem e já passo a sessão para este dataTable assim: DataTable oImpTela = (DataTable)Session["TempImpostos"]; Até aí Tranquilo. Este meu datatable oImpTela possui N rows e para carregar o meu datatable odtImpostos estou fazendo:

 

1. DataRow oNovaRow2 = null;

2. if (odtImpostos.Rows.Count > 0)

3. oNovaRow2 = odtImpostos.Rows[0];

4. else

5. oNovaRow2 = odtImpostos.NewRow();

6.

7. for(int i = 0; i < oImpTela.Rows.Count; i++)

8. {

9. for(int j = 0; j < oImpTela.Columns.Count; j++)

10. {

11. if(oImpTela.Rows[j] != null && oImpTela.Rows[j].ToString().Trim().Length > 0)

12. if(oImpTela.Columns[j].ColumnName == CampoCap)

13. oNovaRow2[Convert.ToString(oImpTela.Columns[j])] = IdNewInstPG;

14. else

15. oNovaRow2[Convert.ToString(oImpTela.Columns[j])] = oImpTela.Rows[j];

16. else

17. oNovaRow2[Convert.ToString(oImpTela.Columns[j])] = System.DBNull.Value;

18. }

19. odtImpostos.Rows.Add(oNovaRow2);

20. }

 

Na linha que chamei de 15. o valor de oImpTela.Rows[j] não consegue ser alocado para a coluna oNovaRow2[Convert.ToString(oImpTela.Columns[j])] onde tenho a informação de que o tipo de conversão é inválida. Onde eu tenho o IdNewInstPG funciona só nesta linha que não e sendo assim todas as rows não são jogadas para oNovaRow2 que posteriormente faria a adição da row no odtImpostos. O que eu não entendo é que tudo é DataTable com exceção para o seguinte: Estou inserindo a posição de uma row de um datatable para uma Row (oNovaRow2). eu faço isso em moutras ocasiões e todas teho sucesso onde a diferença é que eu faço updates na base de dados 1x1 e neste caso em especial que é o primeiro que faço é 1xN (um datatable com N rows). Não sei mais o que fazer e gostaria muito da ajuda dos amigos.

 

Obrigado

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.