VB .NET - Inserindo e excluindo informações
manualmente em Dataset
e
formatando a saida em um DataGrid
Neste artigo vou tratar uma
questão muito comum em sistema comerciais: a inclusão manual de
informações em um dataset, por exemplo, quando você esta
criando uma tela de pedidos e pede pro usuario incluir os itens
deste pedido. Estes itens devem ser salvos em alguma lugar que não
o Banco de Dados, por questões diversas, então mãos a obras.
1) Inicie um novo projeto Windows Application.
2) Insira neste projeto 3 Caixas de Texto, 3 Labels, 3
Botões e 1 Datagrid e altere a propriedade ID do objeto
como mostra a figura abaixo:
3) Inclua as linhas abaixo antes de qualquer classe, na área de
declaração de variáveis:
Dim
tbProdutos As New DataTable()
Dim rowNew As DataRow
Dim dsProdutos As New DataSet()
A primeira linha declara uma nova Tabela, a
segunda linha declara uma variavel do tipo DataRow que servirá
para incluir as linhas no DataSet e a terceira variavel declara
um novo DataSet.
4) No evento Form_Load adicione o seguinte código:
dsProdutos.Tables.Add(tbProdutos)
dsProdutos.Tables(0).Columns.Add("Item",
GetType(Integer))
dsProdutos.Tables(0).Columns(0).AutoIncrement = True
dsProdutos.Tables(0).Columns(0).AutoIncrementSeed = 1
dsProdutos.Tables(0).Columns(0).AutoIncrementStep = 1
dsProdutos.Tables(0).Columns(0).Unique = True
dsProdutos.Tables(0).Columns.Add("Produto",
GetType(String))
dsProdutos.Tables(0).Columns.Add("Quantidade",
GetType(Decimal))
dsProdutos.Tables(0).Columns.Add("DataEntrega",
GetType(Date))
dtgProdutos.DataSource = dsProdutos.Tables(0)
O codigo acima cria a tabela tbProdutos no
DataSet dsProdutos e adiciona a elas as colunas
especificadas passando os tipos de dados das mesmas. Algo que
pode ser um pouco diferente são as linhas 3, 4, 5 e 6 que fazem
com que a coluna item seja Auto incrementada de 1 em 1 e seja única,
quer dizer, não pode haver 2 codigo iguais. A ultima linha
vincula o DataGrid ao DataSet.
5) No evento Click do botão Incluir, adicione o seguinte codigo:
rowNew =
dsProdutos.Tables(0).NewRow
rowNew("Produto") = txtProduto.Text
rowNew("Quantidade") = txtQuantidade.Text
rowNew("DataEntrega") = txtDataEntrega.Text
dsProdutos.Tables(0).Rows.Add(rowNew)
dsProdutos.AcceptChanges()
O codigo acima inclui uma nova linha ao Dataset.
6) No evento Click do botão Excluir, adicione o seguinte codigo:
Dim
rowSelected() As DataRow
rowSelected = dsProdutos.Tables(0).Select("Item = '"
& _ dtgProdutos.Item(dtgProdutos.CurrentRowIndex, 0) &
"'")
dsProdutos.Tables(0).Rows.Remove(rowSelected(0))
O codigo acima excluir um item do Grid, a primeira linha declara
uma variavel do tipo DataRow, a Segunda linha faz uma busca do
DataGrid pela coluna Item e armazena a linha que retorna na
variavel criada e a terceira linha remove a linha encontrada do
DataSet.
7) No evento Click do botão Limpar, adicione o seguinte codigo:
dsProdutos.Tables(0).Rows.Clear()
O codigo acima simplesmente exclui todas as linhas da tabela.
Pronto, o código de inclusão e exclusão de itens já funciona,
mas, vamos analisar alguns detalhes. Veja a figura abaixo:
i |
Note que a área circulada requer um tipo de formatação
especifica, e é isso que iremos fazer agora. Atenção neste ponto que é um ponto pouco
mencionado em artigos e documentações.
8) Selecione o DataGrid e localiza a propriedade
TableStyle e clique no 3 pontos para abrir a
janela.
9) Na janela que se abriu altere as propriedades:
Name: TableStyle1
MappingName: Table1
10) Localize a propriedade GridColumnStyle e
clique nos 3 pontos para abrir a janela.
11) É nesta janela que iremos definir o tipo de dados que
aparecerá no grid, qual o cabeçalho de cada coluna e qual a
largura de cada coluna. Para Isso clique em Add
para abrir um novo estilo e altere as seguintes propriedades:
Name:
colItem
HeaderText: Item
Width: 60
MappingName: Item
12) Adicione mais 3 estilos e troque a propriedade de cada um
deles conforme abaixo:
Name:
colProduto
HeaderText: Produto
Width: 200
MappingName: Produto
Name:
colQuantidade
HeaderText: Quantidade
Width: 75
Format: n2
MappingName: Quantidade
Name:
colDataEntrega
HeaderText: Data de Entrega
Width: 150
Format: D
MappingName: DataEntrega
Pronto agora fazendo o mesmo teste que fizemos antes da formatação
teremos este resultado:
Bem, espero que tenha ajudado com este artigo, quando precisarem
de mim estamos aí.
Giovanni
Souza Moreira
Analista de Sistemas
giovannimoreira@hotmail.com