Array
(
)

Criando um temporário DataTable gerando erro (Referência de objeto não definida para uma instância de um objeto)

Itamar Souza
   - 27 fev 2014

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


        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)
#Código
            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();


Murilo Teixeira
   - 27 fev 2014

Esse erro pode ser motivado por duas coisas:

(DataTable)Session["mDatatable"] está nulo

Ou

footer.Cells[16] é nulo e não consegue pegar o atributo Text
footer.Cells[17] é nulo e não consegue pegar o atributo Text

Acho que se você debuggar a aplicação consegue descobrir qual está vindo nulo.

Itamar Souza
   - 28 fev 2014

Mais uma vez agradeço, achei o problema, no momento de inseri os dados eu estava passando o ((DataTable)Session["myDatatable"]).DefaultView que é diferente do que tinha sido criado. O correto seria mDatatable
Agradeço