none
Onde está o erro no código? RRS feed

  • Pergunta

  • Boa noite pessoal,

    Estou desenvolvendo um código para gerar parcelas de pagamento, jogar em um DataTable e depois passar para um DataGrid, estou usando 3 camadas. O problema é que o DataGrid não está carregando as informações adicionadas. Segue o código:

    namespace Camada.Modelos
    {
        public class TaxaInformation
        {
            private DateTime _vencPrimeiraParc;
            public DateTime VencPrimeiraParc
            {
                get { return _vencPrimeiraParc; }
                set { _vencPrimeiraParc = value; }
            }
        }
    }

    namespace Camada.DAL
    {
        public class TaxaDAL
        {

    // Aqui foi removido o restante do código para simplificar a postagem

            private DataTable _tabela;
            public DataTable Tabela
            {
                get { return _tabela; }
                set { _tabela = value; }
            }

            public void Calcular(TaxaInformation taxa)
            {
                DataTable tb = new DataTable();

                tb.Columns.Add("Valor1", typeof(bool));
                tb.Columns.Add("Valor2", typeof(string));
                tb.Columns.Add("Vencimento", typeof(DateTime));
                tb.Columns.Add("Valor Parcela", typeof(decimal));
                tb.Columns.Add("Valor Entrada", typeof(decimal));
                tb.Columns.Add("Valor3", typeof(decimal));
                tb.Columns.Add("Valor4", typeof(decimal));
                tb.Columns.Add("Valor Total", typeof(decimal));

                for (int iParcela = 1; iParcela <= taxa.NumParcelaTaxa; iParcela++)
                {
                    DateTime dateTime = new DateTime();

                    dateTime = Convert.ToDateTime(taxa.VencPrimeiraParc);

                    tb.Rows.Add(0, String.Format("{0:00} ª Parcela", iParcela), dateTime.AddMonths(iParcela - 1), 0, 0, 0, 0, 0);
                }

                _tabela = tb;
            }


        }
    }

    namespace Camada.BLL
    {
        public class TaxaBLL
        {
            public void calcular(TaxaInformation taxa)
            {

    // Aqui foi removido o restante do código para simplificar a postagem

                TaxaDAL obj = new TaxaDAL();
                obj.Calcular(taxa);
            }

            public DataTable Lista()
            {
                TaxaDAL obj = new TaxaDAL();
                return obj.Tabela;
            }
        }
    }

            private void buttonCalcular_Click(object sender, EventArgs e)
            {
                TaxaInformation taxa = new TaxaInformation();

    // Aqui foi removido o restante do código para simplificar a postagem

                    if (DateTime.TryParse(maskedVencParcela.Text, out dateValue))
                    {
                        taxa.VencPrimeiraParc = dateValue;
                    }

                    TaxaBLL obj = new TaxaBLL();
                    obj.calcular(taxa);

                    dataGridView1.DataSource = obj.Tabela();
            }

    quinta-feira, 3 de outubro de 2013 22:50

Respostas

  • Boa noite pessoa,

    Nenhuma das opções funcionaram, só consegui fazer carregar depois que eu fui na camada BLL e no método Calcular removi a linha TaxaDAL obj = new TaxaDAL(); e deixei fora do método. Agora está funcionando perfeitamente.

    Mas agradeço a ajuda de vocês.

    Obrigado!

    • Marcado como Resposta Giovani Cr segunda-feira, 7 de outubro de 2013 12:29
    segunda-feira, 7 de outubro de 2013 03:14

Todas as Respostas

  • WMN8,

    Tente alterar seu método para:

    public void Calcular(TaxaInformation taxa)
            {
                var tb = new DataTable();

                tb.Columns.Add("Valor1", typeof(bool));
                tb.Columns.Add("Valor2", typeof(string));
                tb.Columns.Add("Vencimento", typeof(DateTime));
                tb.Columns.Add("Valor Parcela", typeof(decimal));
                tb.Columns.Add("Valor Entrada", typeof(decimal));
                tb.Columns.Add("Valor3", typeof(decimal));
                tb.Columns.Add("Valor4", typeof(decimal));
                tb.Columns.Add("Valor Total", typeof(decimal));

                for (int iParcela = 1; iParcela <= taxa.NumParcelaTaxa; iParcela++)

                {

    DateTime dateTime = new DateTime();
                dateTime = Convert.ToDateTime(taxa.VencPrimeiraParc);
                    var dataRow = tb.NewRow();
    dataRow["Valor1"] = false;

    dataRow["Valor2"] = String.Format("{0:00} ª Parcela", iParcela);

    dataRow["Vencimento"] = dateTime.AddMonths(iParcela - 1)

    dataRow["Valor Parcela"] = 0;

    dataRow["Valor Entrada"] = 0;

    dataRow["Valor3"] = 0;

    dataRow["Valor4"] = 0;

    dataRow["Valor Total"] = 0;

    tb.Rows.Add(dataRow );

                }
                _tabela = tb;
            }

    E adicione o DataBind() após definir seu DataSource na grid:

    dataGridView1.DataSource = obj.Tabela();

    dataGridView1.DataBind();


    Ricardo Minoru Makiyama



    sexta-feira, 4 de outubro de 2013 03:02
  • WMN8,

    Acredito que seu problema esteja no seguinte ponto:

    Os métodos de calcular não retornam nada, então você não pode popular seu gridview.

    por exemplo, neste método você colocou como void

     public void Calcular(TaxaInformation taxa)
             {
                 DataTable tb = new DataTable();
    
                 tb.Columns.Add("Valor1", typeof(bool));
                 tb.Columns.Add("Valor2", typeof(string));
                 tb.Columns.Add("Vencimento", typeof(DateTime));
                 tb.Columns.Add("Valor Parcela", typeof(decimal));
                 tb.Columns.Add("Valor Entrada", typeof(decimal));
                 tb.Columns.Add("Valor3", typeof(decimal));
                 tb.Columns.Add("Valor4", typeof(decimal));
                 tb.Columns.Add("Valor Total", typeof(decimal));
    
                 for (int iParcela = 1; iParcela <= taxa.NumParcelaTaxa; iParcela++)
                 {
                     DateTime dateTime = new DateTime();
    
                     dateTime = Convert.ToDateTime(taxa.VencPrimeiraParc);
    
                     tb.Rows.Add(0, String.Format("{0:00} ª Parcela", iParcela), dateTime.AddMonths(iParcela - 1), 0, 0, 0, 0, 0);
                 }
    
                 _tabela = tb;
             }
    

    você deveria ter colocar

     public DataTable Calcular(TaxaInformation taxa)
             {
                 DataTable tb = new DataTable();
    
                 tb.Columns.Add("Valor1", typeof(bool));
                 tb.Columns.Add("Valor2", typeof(string));
                 tb.Columns.Add("Vencimento", typeof(DateTime));
                 tb.Columns.Add("Valor Parcela", typeof(decimal));
                 tb.Columns.Add("Valor Entrada", typeof(decimal));
                 tb.Columns.Add("Valor3", typeof(decimal));
                 tb.Columns.Add("Valor4", typeof(decimal));
                 tb.Columns.Add("Valor Total", typeof(decimal));
    
                 for (int iParcela = 1; iParcela <= taxa.NumParcelaTaxa; iParcela++)
                 {
                     DateTime dateTime = new DateTime();
    
                     dateTime = Convert.ToDateTime(taxa.VencPrimeiraParc);
    
                     tb.Rows.Add(0, String.Format("{0:00} ª Parcela", iParcela), dateTime.AddMonths(iParcela - 1), 0, 0, 0, 0, 0);
                 }
    
                 return= tb;
    
    
             }
    

    assim retorna um datatable e você consegue inserir no Gridview.


    Julio Arruda
    __________________________________________
    Se foi util, marque como resposta
    .Net Coders
    Coordenador .Net Coders

    • Sugerido como Resposta Julio ArrudaMVP sexta-feira, 4 de outubro de 2013 11:32
    sexta-feira, 4 de outubro de 2013 11:32
  • Boa noite pessoa,

    Nenhuma das opções funcionaram, só consegui fazer carregar depois que eu fui na camada BLL e no método Calcular removi a linha TaxaDAL obj = new TaxaDAL(); e deixei fora do método. Agora está funcionando perfeitamente.

    Mas agradeço a ajuda de vocês.

    Obrigado!

    • Marcado como Resposta Giovani Cr segunda-feira, 7 de outubro de 2013 12:29
    segunda-feira, 7 de outubro de 2013 03:14