none
DataTable gerando erro (Referência de objeto não definida para uma instância de um objeto) RRS feed

  • Pergunta

  • Amigos Veja se podem me ajudar, tenho a necessidade de criar um DataTable temporário , estou fazendo assim: Agradeço a ajuda!

     

    if (!IsPostBack)
                {
                    //dataTable para guarda dados temporario
                    dtb = new DataTable();
                    dtb = CriaDataTable();
                    Session["mDatatable"] = dtb;
                    GridResumoTotal.DataSource = ((DataTable)Session["mDatatable"]).DefaultView;
                    GridResumoTotal.DataBind();
     
    }
     
            //criar um DataTable temporário
            private DataTable CriaDataTable()
            {
                DataTable mDataTable = new DataTable();
                DataColumn mDataColumn;
     
                mDataColumn = new DataColumn();
                mDataColumn.DataType = Type.GetType("System.String");
                mDataColumn.ColumnName = "CODIGO";
                mDataTable.Columns.Add(mDataColumn);
     
                mDataColumn = new DataColumn();
                mDataColumn.DataType = Type.GetType("System.String");
                mDataColumn.ColumnName = "MODALIDADE";
                mDataTable.Columns.Add(mDataColumn);
     
                mDataColumn = new DataColumn();
                mDataColumn.DataType = Type.GetType("System.Int32");
                mDataColumn.ColumnName = "QTD_OBJ_16";
                mDataTable.Columns.Add(mDataColumn);
     
                mDataColumn = new DataColumn();
                mDataColumn.DataType = Type.GetType("System.Int32");
                mDataColumn.ColumnName = "QTD_OBJ_17";
                mDataTable.Columns.Add(mDataColumn);
     
                return mDataTable;
            }
     
     
            private void incluirNoDataTable(string modalidade, Int32 qtd_obj16, Int32 qtd_obj_17, DataTable mTable)
            {
                DataRow linha;
                linha = mTable.NewRow();
                //gera o número GUID
                linha["Codigo"] = Guid.NewGuid().ToString();
                linha["MODALIDADE"] = modalidade;
                linha["QTD_OBJ_16"] = qtd_obj16;
                linha["QTD_OBJ_17"] = qtd_obj_17;
                mTable.Rows.Add(linha);
            }
    
    

    No momento de fazer a inserção me gera o erro: (Referência de objeto não definida para uma instância de um objeto)

    incluirNoDataTable("TOTAL GERAL DIA : ", 
                        Int32.Parse(footer.Cells[16].Text),
                        Int32.Parse(footer.Cells[17].Text), 
                        (DataTable)Session["mDatatable"]);
    GridResumoTotal.DataSource = ((DataTable)Session["myDatatable"]).DefaultView;
    GridResumoTotal.DataBind();
    

    sexta-feira, 28 de fevereiro de 2014 00:33

Respostas

  • Olá Itasousa,

    parece que o problema é na ultima linha, você colocou o nome da table diferente:

    incluirNoDataTable("TOTAL GERAL DIA : ", 
                        Int32.Parse(footer.Cells[16].Text),
                        Int32.Parse(footer.Cells[17].Text), 
                        (DataTable)Session["mDatatable"]);
    GridResumoTotal.DataSource = ((DataTable)Session["myDatatable"]).DefaultView;
    GridResumoTotal.DataBind();

    veja você colocou "myDatatable" e os demais você colocou "mDatatable".

    outra coisa, não é necessário a primeira linha instanciando o datatable por que dentro do outro método você já está fazendo isso

    if (!IsPostBack)
                {
                    //dataTable para guarda dados temporario
                    dtb = new DataTable(); // linha desnecessária.
                    dtb = CriaDataTable();
                    Session["mDatatable"] = dtb;
                    GridResumoTotal.DataSource = ((DataTable)Session["mDatatable"]).DefaultView;
                    GridResumoTotal.DataBind();
     
    }

    Espero ter ajudado,

    Abraços.

    • Marcado como Resposta Giovani Cr quarta-feira, 5 de março de 2014 13:38
    sexta-feira, 28 de fevereiro de 2014 10:48