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 |
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.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);
} |
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