Desenvolvimento - C#

Acessando dados com Textboxes e botões de navegação

Nesse artigo vamos ver o uso de TextBoxes em conjunto com os botões Primeiro/Anterior/Próximo/Último.

por Ediberto Alves



Olá!

Nesse artigo abaixo vamos ver o uso de TextBoxes em conjunto com os botões Primeiro/Anterior/Próximo/Último.  Tantas vezes nos deparamos que temos que usar esses componentes para o tratamento das informações vindas do grid de uma forma rápida.

Importante: O exemplo que estou usando vem do banco de dados Northwind do Access 2007, caso vc não possua, baixe diretamente do site oficial do Microsoft Office.

<a href="http://office.microsoft.com/pt-br/templates/TC012289971046.aspx?pid=CT101428651046"> Northwind 2007</a>

Crie um novo projeto Windows Forms Application

Vá em File > New Project e dê um nome no seu projeto Windows Forms.

Conectando com o banco:

Na seção using, referencie System.Data e System.Data.OleDb

Vamos criar uma rotina que retorne um DataTable com o código, nome e sobrenome dos clientes:

        private DataTable recuperaTabelaClientes()

        {

            string Conexao = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Northwind 2007.accdb;Persist Security Info=False;";

            string vSQL = "select identificação, nome, sobrenome from Clientes";

            OleDbConnection vConn = new OleDbConnection(Conexao);

            OleDbDataAdapter vDataAdapter = new OleDbDataAdapter(vSQL, vConn);

            DataTable vTable = new DataTable();

            vDataAdapter.Fill(vTable);

            return vTable;

        }

Importante: Certifique do caminho do banco de dados Northwind 2007.

Implementando o código:

Crie uma variável global do tipo inteiro para receber o código vindo da tabela:

        int Contador;

No form coloque quatro buttons, três textboxes e um DataGridView e nomeie-os. Como sugere o texto abaixo:

Buttons:

btnPrimeiro

btnAnterior

btnProximo

btnUltimo

TextBoxes:

txtCodigo

txtNome

txtSobrenome

DataGridView

gridClientes

Ao final, ficará semelhante a essa tela:

Agora, nos botões vamos implementando os códigos, clicando duas vezes sobre eles, primeiro no botão btnPrimeiro:

        private void btnPirmeiro_Click(object sender, EventArgs e)

        {

            if (recuperaTabelaClientes().Rows.Count > 0)

            {

                Contador = 0;

                txtCodigo.Text = recuperaTabelaClientes().Rows[Contador]["identificação"].ToString();

                txtNome.Text = recuperaTabelaClientes().Rows[Contador]["nome"].ToString();

                txtSobrenome.Text = recuperaTabelaClientes().Rows[Contador]["sobrenome"].ToString();

                dataGridView1.CurrentCell = dataGridView1.Rows[Contador].Cells["identificação"];

            }

        }

No botão btnAnterior:

private void btnAnterior_Click(object sender, EventArgs e)

        {

            if (Contador == recuperaTabelaClientes().Rows.Count - 1 || Contador != 0)

            {

                Contador--;

                txtCodigo.Text = recuperaTabelaClientes().Rows[Contador]["identificação"].ToString();

                txtNome.Text = recuperaTabelaClientes().Rows[Contador]["nome"].ToString();

                txtSobrenome.Text = recuperaTabelaClientes().Rows[Contador]["sobrenome"].ToString();

                dataGridView1.CurrentCell = dataGridView1.Rows[Contador].Cells["identificação"];

            }

        }

No botão  btnPróximo:

        private void btnProximo_Click(object sender, EventArgs e)

        {

            if (Contador < recuperaTabelaClientes().Rows.Count - 1)

            {

                Contador++;

                DataGridViewRow vGridRow = dataGridView1.Rows[Contador];

                txtCodigo.Text = recuperaTabelaClientes().Rows[Contador]["identificação"].ToString();

                txtNome.Text = recuperaTabelaClientes().Rows[Contador]["nome"].ToString();

                txtSobrenome.Text = recuperaTabelaClientes().Rows[Contador]["sobrenome"].ToString();

                dataGridView1.CurrentCell = dataGridView1.Rows[Contador].Cells["identificação"];               

            }

        }

No botão btnUltimo:

        private void btnUltimo_Click(object sender, EventArgs e)

        {

            Contador = recuperaTabelaClientes().Rows.Count - 1;

            txtCodigo.Text = recuperaTabelaClientes().Rows[Contador]["identificação"].ToString();

            txtNome.Text = recuperaTabelaClientes().Rows[Contador]["nome"].ToString();

            txtSobrenome.Text = recuperaTabelaClientes().Rows[Contador]["sobrenome"].ToString();

            dataGridView1.CurrentCell = dataGridView1.Rows[Contador].Cells["identificação"];

          

        }

Para complementar,no final de cada evento Click dos botões, tem essa linha:

dataGridView1.CurrentCell = dataGridView1.Rows[Contador].Cells["identificação"];

Justamente quando avança ou retrocede cada registro, a seta que está presente no DataGridView também vai no registro que é carregado nos textboxes.

Compile o projeto (F5) e veja o resultado.

Espero que aproveitem esse exemplo para as soluções do dia-a-dia com o Visual Studio. Até o próximo artigo.

Abraços.

Baixe o código fonte do exemplo: Textboxes_Dados.zip

Ediberto Alves

Ediberto Alves - Desenvolvedor, graduado em Tecnologia em Informática em atuação na área de desenvolvimento de soluções nas plataformas Win32 e Web, usando tecnologias .NET, Delphi e banco de dados Oracle, Firebird, SQL Server há mais de 7 anos. Publica artigos sobre desenvolvimento, tecnologia e outros assuntos no blog: http://edibertoalves.com.br/blog e também, presente nos fóruns da comunidade .NET.