ASP .NET - Usando DataTable (C#)


Este tutorial vai mostrar como você pode criar um objeto DataTable em um projeto ASP .NET, sem usar um banco de dados, usando a linguagem C#.

Esta técnica tem muitas utilidades e é usada principalmente para armazenar dados temporários.

Estou usando o Visual Web Developer 2088 Express Edition.

A primeira coisa que você deve pensar é na estrutura do seu DataTable que geralmente representa a estrutura de uma tabela de um banco de dados. (pode representar qualquer outra fonte de informação...)

Para facilitar vou propor uma estrutura bem simples para o DataTable deste artigo:

Coluna Tipo de dados
Codigo String
Nome String
Endereco String
Email String

Geralmente em uma tabela temos uma chave primária que é representada por uma coluna do tipo int; como o DataTable é usado para armazenar dados temporários defini a coluna Codigo como do tipo String pois irei atribuir um valor ao campo usando um GUID (Global Unique Identifiers).

Podemos usar os GUIDs para atribuir valores únicos a classes ou quando tratamos com banco de dados. Para usar um GUID basta usar o namespace System.Guid.

Ex:   String numero = System.Guid.NewGuid().ToString());
 

Abra o VWD 2008 Express e crie um novo web site usando a linguagem C# com o nome de usandoDataTable;

Na página Default.aspx , no modo Design , a partir do menu Table selecione Insert Table e inclua uma tabela com 4 linhas e 1 coluna;

A seguir inclua os seguintes componentes:

Conforme o leiaute abaixo:

Agora vamos criar o código no arquivo Default.aspx.cs , o code-behind, que vai permitir criar e incluir dados em um DataTable exibindo-os em um GridView.

Primeiro vamos definir o namespace System.Data  para tratar com os objetos da ADO .NET.

using System.Data;

Em seguida vamos definir uma variável do tipo DataTable que seja visível na página:

internal DataTable dtb = null;

A palavra-chave Internal é um modificador de acesso para tipos de membros que são acessíveis somente no mesmo assembly. Em C# as classes que não possuírem uma modificador de acesso, são por default internal.

A seguir no evento Load da página vamos colocar o código que vai criar o DataTable e obter o DataTable criado da sessão exibindo os valores no GridView:

protected void Page_Load(object sender, EventArgs e)

{

   if (!Page.IsPostBack)

  {

        dtb = new DataTable();

        dtb = CriaDataTable();
 

        Session["mDatatable"] = dtb;


          this.GridView1.DataSource =  ((DataTable)Session["mDatatable"]).DefaultView;

          this.GridView1.DataBind();

   }

}

A primeira rotina que vamos construir é a que vai criar a estrutura do DataTable:

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 = "Nome";

mDataTable.Columns.Add(mDataColumn);

 

mDataColumn = new DataColumn();

mDataColumn.DataType = Type.GetType("System.String");

mDataColumn.ColumnName = "Endereco";

mDataTable.Columns.Add(mDataColumn);

 

mDataColumn = new DataColumn();

mDataColumn.DataType = Type.GetType("System.String");

mDataColumn.ColumnName = "Email";

mDataTable.Columns.Add(mDataColumn);


return
mDataTable;

}

O código define um objeto DataTable e cria uma estrutura com 4 colunas definindo o nome e o tipo de dados de cada coluna;

O retorno é um DataTable.

A seguir no evento Click do botão btnIncluir vamos digitar o código que vai incluir um novo registro no DataTable:

protected void btnIncluir_Click(object sender, EventArgs e)

{

    if (txtNome.Text.Trim() == "")

    {

         this.lblmsg.Text = "Informe o nome do usu rio.";

         return;

    }

    else

   {

      incluirNoDataTable(this.txtNome.Text.Trim(), this.txtEndereco.Text.Trim(), this.txtEmail.Text.Trim(), (DataTable)Session["mDatatable"]);

 

          this.GridView1.DataSource = ((DataTable)Session["myDatatable"]).DefaultView;

      this.GridView1.DataBind();

 

      this.txtNome.Text = "";

      this.txtEndereco.Text = "";

      this.txtEmail.Text = "";

      this.lblmsg.Text = "";

    }

}

O código verifica se o nome do usuário foi informado e chama a rotina incluirNoDataTable(), exibe os dados do DataTable da sessão no GridView e limpa os campos TextBox do formulário e a mensagem.

A rotina incluirNoDataTable possui o seguinte código:

private void incluirNoDataTable(string nome, string endereco, string email, DataTable mTable)

{

    DataRow linha;

 

     linha = mTable.NewRow();

 

     //gera o n£mero GUID

     linha["Codigo"] = Guid.NewGuid().ToString();

     linha["Nome"] = nome;

     linha["Endereco"] = endereco;

     linha["Email"] = email;

 

     mTable.Rows.Add(linha);

}

Este código cria um DataRow e inclui uma nova linha no DataTable. Em seguida gera o GUID e atribui os valores recebidos ao DataRow e os acrescenta no DataTable.

Executando a página inicialmente veremos:

Como inicialmente não existem dados GridView não é exibido; após efetuar a primeira inclusão os dados serão vistos na página web conforme figura abaixo:

Vimos como usar o objeto DataTable para armazenar valores temporários que poderão ser persistidos de diversas formas. O importante é entender como criar e usar este objeto em suas aplicações.

Pegue o projeto completo aqui:  usandoDataTable.zip

Até o próximo artigo 

Referências:


José Carlos Macoratti