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