Acesso a Dados com Wizard (sem escrever código) e Programaticamente



Documentos relacionados
Acesso a Dados: com Wizard (sem escrever código), e Programaticamente

Aplicação ReadWriteData

Iniciar o Data Adapter Configuration Wizard. Toolbox Data Duplo clique em OleDbDataAdapter. Botão next na caixa de diálogo

Tarefa Orientada 5 Aplic. Manutenção de Facturas de Clientes

Acesso a Dados ADO.NET

P S I 2. º A N O F 5 M E S T R E / D E T A L H E E P E S Q U I S A. Criar uma relação mestre-detalhe. Pesquisa de informação

Módulo 3936 ASP.NET. Financiado pelo FSE

Consulta de endereço através do Cep

1. FILTRAR OS DADOS ATRAVÉS DE FORMULÁRIO (FILTER BY FORM)

Manual de Administração Intranet BNI

Criar uma aplicação JPA2 com EclipseLink e H2

C# - Conexão com MySQL

Microsoft Visual Studio 2010 C# Volume II

Criação de uma aplicação Web ASP.NET MVC usando Code First

Guia e Utilização do Visual Studio 6.0

Tarefa 18: Criar Tabelas Dinâmicas a partir de Listas de Excel

Repeater no GASweb. Regiões

Reconhecer alguns dos objectos VBA Automatizar bases de dados recorrendo à programação VBA e scripts SQL

INTRODUÇÃO AO MODELO ADO.NET (DESCONECTADO)

Tarefa Orientada 2 Aplic. Manutenção de Produtos - DataGridView


Alguns truques do Excel. 1- Títulos com inclinação. 2- Preencha automaticamente células em branco

ASP.NET Gerando relatórios com o ReportViewer

Gabarito - Programação C# com Visual Studio - Intermediário - 05/08/2013 AULA Perguntas e Respostas

MICROSOFT ACCESS MICROSOFT ACCESS. Professor Rafael Vieira Professor Rafael Vieira

Oficina de Construção de Páginas Web

NOTA: Neste tutorial foi utilizado o Visual Studio 2010 para criar o Projeto Web no qual iremos aplicar os temas e os skins.

EXCEL TABELAS DINÂMICAS

Com criar relatório no Report Services do Microsoft SQL Server 2008 R2 integrado com o

Bases de Dados. Lab 1: Introdução ao ambiente

Ficha prática nº 7. SGBD Microsoft Access e SQL Server

Neste tutorial irá criar uma animação simples com base num desenho do Mechanical Desktop.

Tutorial exe elearning XHTML editor (versão 1.0x)

A VISTA BACKSTAGE PRINCIPAIS OPÇÕES NO ECRÃ DE ACESSO

5 - Se o documento estiver completo, com os campos totalmente inseridos e com o aspecto que pretende, poderá guardá-lo.

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

LAB12: Componentes ASP.NET

Os elementos básicos do Word

Microsoft Access. No Access, existem vários tipos de objectos: Tabelas. Consultas. Formulários Relatórios Macros Módulos

Connection String usada por uma Class Library

DotNetNuke. Gestão de Conteúdos. Módulos - II. Inserção de conteúdos nos módulos. Módulo de Text/HTML. Módulo de Sre-Notícias. Módulo de Sre-Formação

Login. Criar um novo website File > New > WebSite Framework 4.5 Visual C# ASP.NET Empty Web Site Nome do projeto: WebLogin

MANUAL DO EXCEL. Um campo é um espaço que contém determinada informação (ex: Nome do cliente X, Telefone do Sr. Y)

Aplicações de Escritório Electrónico

- O MySQL para além da sua utilização em modo linha de comandos, também pode ser utilizado através de ferramentas gráficas.

PACWEB Módulo de Pesquisa MANUAL DO UTILIZADOR

Editor HTML. Composer

Scripts para Bloquear Sites e Domínios no ISA Server

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 1 PROF. EMILIO PARMEGIANI

! "! # $ " % & ' ( # ( ) Página: 1

Criando uma aplicação Web em C# usando o NHibernate

Aula 06 Usando controles em ASP.NET

Criar um formulário do tipo Diálogo modal ; Alterar a cor de fundo de um formulário; Inserir botões de comando e caixas de texto;

DSS 08/09. Camada de Dados - JDBC. Aula 1. António Nestor Ribeiro /António Ramires Fernandes/ José Creissac Campos {anr,arf,jfc}@di.uminho.

Findo o processo de normalização, obtemos o conjunto de tabelas indicado na tabela 1.28.

Universidade da Beira Interior. Sistemas Distribuídos /2015 Curso: Engª Informática. Folha 11. JAX-RS: Java API for RESTful Web Services

MANUAL DO UTILIZADOR

using System; using System.Collections.Generic; using System.Text; namespace Estudo { public class PessoaJuridica : Pessoa { private string cnpj;

Banco de dados Northwind (sample database clique aqui para baixar) em execução ou SqlExpress. Compreensão de C # e ASP.NET

Este controlo tem de estar ligado a um campo, senão deve-se utilizar outro tipo de controlo.

EDUTec Learning. José Paulo Ferreira Lousado

Criação de uma DAL com Typed DataSets

1.2. Na pasta Os meus documentos, crie um website de uma página, com o nome paggrupo.

Construindo Aplicações com ASP.NET MVC 2.0 Aula 03 Luiz Alberto Ferreira Gomes. Ciência da Computação da PUC Minas

Com este tutorial, temos por objetivo determinar a distância entre duas localidades.

Aula Extra Conexão ODBC para aplicações Delphi 7 que usam SQL Server 2005

Catálogo Nacional de Compras Públicas. Manual de Fornecedores

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Tarefa Orientada 6 Edição de Dados

Tarefa Orientada 18 Tabelas dinâmicas

1. Introdução. 2. A área de trabalho

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

CRIAÇÃO DE RELATÓRIOS EM DELPHI

Laboratório 1 SQL Server Integration Services

Guião de Utilização do FrontPage 2002

Deverá ser apresentada uma caixa de combinação para auxiliar o utilizador a escolher o distrito de residência do entrevistado.

Microsoft Office FrontPage 2003

Squeak Componente Livro. Luís Valente, 2009

Seguindo o modelo descrito nas Tabelas 1 e 2, crie os arquivos utilizando a versão doo Excel que você tiver disponível.

Veja abaixo um exemplo de como os dados são mostrados quando usamos o

Manipulação de Células, linhas e Colunas

PRIMAVERA EXPRESS: Funcionalidades do Produto

Tarefa Orientada 2 Criar uma base de dados

MANIPULANDO BANCO DE DADOS NO POSTGRESQL SEM FAZER USO DE COMANDOS SQL

Iniciando o ArcView 3.2

Procedimentos para a divulgação de eventos no site da ECUM

FIGURA. 2.2 ECRÃ DE TRABALHO

Iniciando o MySQL Query Brower

Tarefa Orientada 15 Manipulação de dados

Bases de Dados. Lab 7: Desenvolvimento de aplicações com PHP

4.1. TRABALHAR COM O CALENDÁRIO

Tutorial de Aplicação Simples usando Web Forms e MySQL. Luiz Eduardo Guarino de Vasconcelos

GeoMafra SIG Municipal

Transcrição:

Base de Dados: loja.mdb Acesso a Dados com Wizard (sem escrever código) e Programaticamente Tabelas: Categorias (IdCat, NomeCat) Produtos (IdProd, IdCat, Preço, Stock) Carrinho (ProdId, Quantidade) Clientes (CliId, Nome, Morada, Telefone, NIF, BI) A Visualização de uma tabela num controlo GridView através de Wizard 1. Criar um Web Site (File System Web site) File > New Web Site > ASP.NET Web Site Location: File System Visual C# OK. 2. Colocar a base de dados (loja.mdb) no directório App_Data Depois de colocada ver o conteúdo da Base de Dados: duplo clique no ficheiro de base de dados (uso do Microsoft Access). através do Server Explorer: na janela Server Explorer expandir Data Connections, loja.mdb, Tables. Surgem as tabelas Carrinho, Categorias, Clientes e Produtos. Para visualizar o conteúdo de uma tabela com o botão direito do rato em cima do nome da tabela seleccionar Show Table Data (pode ser necessário efectuar o Refresh).

3. Adicionar um Controlo GridView para mostrar os dados de uma Tabela Para mostrar os dados de uma tabela da base de dados num controlo GridView vamos criar: uma ligação à base de dados um controlo data source, que executa um comando SQL (Select) e retorna os resultados um controlo GridView para carregar os dados do controlo data source e os mostrar Estes elementos podem ser adicionados separadamente. No entanto, o modo mais fácil é começar por adicionar um controlo GridView, e depois através de Wizards criar a ligação à base de dados e o objecto data source. Para posicionar o controlo GridView na página podemos começar por adicionar à página, em modo Design, uma tabela de 3 linhas por 3 colunas, fazendo: Layout > Insert Table Em seguida adicionámos à célula central da tabela (em modo Design) um controlo GridView (existente na ToolBox no grupo Data). Com o cursor em cima da GridView, clicámos na Smart Tag para obter o menu GridView Tasks. Seleccionar Choose Data Source:, e clicar em <New data source >. Escolher como tipo de Data Source Access Database, e OK. Para seleccionar o ficheiro da base de dados premir Browse, seleccionar App_Data, seleccionar loja.mdb e OK. O campo de texto com o nome do ficheiro de base de dados fica preenchido com ~App_Data/loja.mdb. Premir Next. Para mostrar o conteúdo da tabela Categorias seleccionar: Specify columns from a table or view, nome da tabela: Categorias colunas: * A instrução SQL mostrada será: Select * From [Categorias] Premir Next. Podemos testar a ligação à base de dados. Premir Finish. O Wizard criou e configurou um controlo Access Data Source que incorpora a ligação à base de dados e a instrução SQL de interrogação especificada. Ligou o controlo GridView ao controlo Access Data Source para que o controlo GridView mostre os dados retornados pelo controlo Access Data Source. 4. Testar a página: Premir Ctrl + F5 ou com o botão direito do rato em cima do nome da página seleccionar View in Browse.

5. Adicionar Paginação Na vista de Design clicar na Smart Tag, seleccionar Enable Paging. Testar e verificar que o controlo GridView apresenta um rodapé com links para números de páginas. Verificar a alteração do código na vista Source: AllowPaging="True". 6. Adicionar Ordenação Na vista de Design clicar na Smart Tag, seleccionar Enable Sorting. Testar e verificar que no controlo GridView os cabeçalhos das colunas mudaram para links. Verificar a alteração do código na vista Source: AllowSorting="True". 7. Esconder campos da tabela Para esconder a coluna com os valores de IdCat na vista de Design clicar na Smart Tag, seleccionar Edit Columns, em Selected Fields seleccionar IdCat. Surgem as propriedades desta coluna (BoundField properties:). No grupo Behavior mudar a propriedade Visible de True para False. Testar e verificar. B Criação de uma página Master-Detail através de Wizard com dois controlos GridView Nesta página vamos mostrar dados de duas tabelas relacionadas - tabela Categorias e tabela Produtos e estabelecer entre elas uma relação master-detail, isto é, a tabela Produtos mostra apenas os produtos da categoria seleccionada na tabela Categorias. Para mostrar apenas os produtos da categoria seleccionada vamos criar um comando SQL parametrizado (instrução SELECT com cláusula WHERE). O controlo Access Data Source ligado à tabela dos Produtos conterá uma instrução SELECT com cláusula WHERE (filtro parametrizado): Select * From [Produtos] Where [IdCat] =? O modo como este objecto (Access Data Source) vai buscar o valor do parâmetro é indicado noutro elemento que vai ser criado - elemento parameter. 1. Acrescentar uma página ao Web Site Na janela Solution Explorer, com o botão direito do rato em cima do nome do projecto, seleccionar Add New Item seleccionar Web Form e mudar o nome da página para MasteDetailComWizard

2. Adicionar dois controlos GridView para estabelecer o relacionamento Master- Detail Para posicionar os controlos GridView na página podemos começar por adicionar à página, em modo Design, uma tabela de 2 linhas por 2 colunas, fazendo: Layout > Insert Table Rows: 2 Columns: 2 Na 1.ª linha da tabela colocámo dois Labels para os títulos Categorias: e Produtos:. Na 2.º linha colocámos dois controlos GridView, alterámos os IDs para gvcategorias (GridView para mostar as categorias) e gvprodutos (GridView para mostar as produtos). Através da Smart Tag do controlo gvcategorias criámos o objecto Access Data Source: GridView Tasks Choose Data Source: <New data source > Access Database OK. Browse App_Data loja.mdb OK (~App_Data/loja.mdb) Next Specify columns from a table or view Categorias * (SELECT * FROM [Categorias]) Next Finish 3. Adicionar Selecção à GridView gvcategorias A tabela das Categorias vai funcionar como tabela Mestre. Para permitir seleccionar uma linha desta tabela, na vista de Design clicar na Smart Tag, e em GridView Tasks seleccionar Edit Columns. Debaixo de Available Fields abrir o nó Command Field, escolher Select e premir Add para o adicionar à lista dos SelectedFields. Estes procedimentos criam uma nova coluna da tabela com um CommandField Select. Através das propriedades deste Command Field é possível mudar a posição desta coluna, o tipo de botão (link, botão ou imagem), o texto, etc.

Para que ao seleccionar uma linha desta tabela seja possível determinar a chave do respectivo registo é necessário seleccionar o controlo GridView, e na janela de propriedades colocar a propriedade DataKeyNames igual a IdCat. 4. Configuração da Instrução Select Parametrizada para mostrar os produtos associados à categoria seleccionada A tabela dos produtos vai funcionar como tabela de Detalhes mostrando os produtos da categoria seleccionada. É necessário uma instrução SQL diferente da anterior pelo será necessário um segundo objecto Access Data Source. Através da Smart Tag do controlo gvprodutos criámos o objecto Access Data Source: GridView Tasks Choose Data Source: <New data source > Access Database OK. Browse App_Data loja.mdb OK (~App_Data/loja.mdb) Next Specify columns from a table or view Produtos * WHERE Column: IdCat Operator: = Source:Control Control ID: gvcategorias Default Value: 1 Add OK (SELECT * FROM [produtos] WHERE [IdCat] =?) Next Finish 5. Testar a página Premir Ctrl + F5 ou com o botão direito do rato em cima do nome da página MasterDetailComWizard.aspx seleccionar View in Browse. C Criação de uma página Master-Detail programaticamente (através de código) com dois controlos GridView Muitas aplicações Web são construídas usando múltiplas camadas, com um ou mais componentes para fornecer acesso aos dados. Vamos criar um objecto (classe DAL Data Access Layer) para usar como fonte de dados para as nossas páginas Web. O modo de acesso aos dados de uma base de dados pode seguir um de dois modelos: Arquitectura Ligada usa o objecto DataReader para retornar os dados seleccionados. Arquitectura Desligada usa o objecto DataSet para receber os dados da base de dados. Vamos usar a arquitectura desligada objecto DataReader.

1. Adicionar uma classe de Acesso a Dados (DAL) ao Web Site Na janela Solution Explorer, com o botão direito do rato em cima do nome do projecto, seleccionar Add New Item seleccionar Class e mudar o nome da classe para DAL.cs. Visual Studio informa que a classe deve ser colocada no directório App_Code. Premir Yes. Como vamos usar objectos do namespace System.Data.OleDb devemos importar este package, acresecentando-o à lista dos packages já importados: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.OleDb; public class DAL private const string CONN = @"Provider=Microsoft.Jet.OLEDB.4.0;User ID=;"; private const string DBPATH = @"Data Source= DataDirectory /loja.mdb"; private OleDbConnection conn = null; private OleDbDataReader dr = null; public OleDbDataReader getcategorias() conn = new OleDbConnection(); conn.connectionstring = CONN + DBPATH; conn.open(); string sqlstr = "Select * From Categorias"; cmd.commandtext = sqlstr; dr = cmd.executereader(); return dr; public void closeconnection() dr.close(); conn.close(); public OleDbDataReader getprodutosbyidcategoria(int codigo) conn = new OleDbConnection(); conn.connectionstring = CONN + DBPATH; conn.open(); string sqlstr = "Select * From Produtos Where IdCat=?"; cmd.commandtext = sqlstr; cmd.parameters.addwithvalue("idcat", codigo); dr = cmd.executereader(); return dr;

2. Acrescentar uma página ao Web Site Na janela Solution Explorer, com o botão direito do rato em cima do nome do projecto, seleccionar Add New Item seleccionar Web Form e mudar o nome da página para MasteDetailEmCodigoComDataReader. De um modo semelhante à página anterior adicionar uma tabela com 2 linhas e 2 colunas, colocar na 1.º linha os títulos Categorias e Produtos e na 2.ª linha dois controlos GridView com os IDs gvcategorias (GridView para mostar as categorias) e gvprodutos (GridView para mostar as produtos). As fontes de dados destes controlos GridView serão colocadas programaticamente. A fonte de dados do controlo gvcategorias é colocada no método Page_Load da página. Este método é executado sempre que a página é chamada, quer seja a 1.ª vez, quer seja um postback. No entanto só é necessário carregar os dados da Base de Dados para o controlo GridView na 1.ª invocação da página. Depois, sempre que a página efectua um postback o controlo GridView mantém os dados. protected void Page_Load(object sender, EventArgs e) if (!Page.IsPostBack) DAL dal = new DAL(); gvcategorias.datasource = dal.getcategorias(); gvcategorias.databind(); dal.closeconnection(); Para configurar as colunas do controlo GridView das Categorias: Seleccionar o controlo gvcategorias, premir o smart tag, seleccionar Edit Columns, des-seleccionar Auto-generate fields, seleccionar BoundField para adicionar uma coluna ligada a um campo da tabela (campo NomeCat), e premir Add. Depois na lista dos Selected fields: ao seleccionar BoundField aparece a janela das suas propriedades (BoundField properties). Nesta janela, no grupo Data, em DataField colocar o valor NomeCat. Deste modo configurámos o controlo com apenas uma coluna ligada aos dados do campo NomeCat da tabela fonte de dados. Terminámos com OK. Em seguida devemos acrescentar mais uma coluna para permitir seleccionar uma linha desta tabela (procedimentos idênticos ao passo 3 da página anterior): clicar na Smart Tag, e em GridView Tasks seleccionar Edit Columns. Debaixo de Available Fields abrir o nó Command Field, escolher Select e premir Add para o adicionar à lista dos SelectedFields. Ainda, para que ao seleccionar uma linha desta tabela seja possível determinar a chave do respectivo registo é necessário seleccionar o controlo GridView, e na janela de propriedades colocar a propriedade DataKeyNames igual a IdCat.

A fonte de dados do controlo gvprodutos é colocada no método que trata o evento resultante da selecção de uma linha da tabela das Categorias. Este método é executado sempre que o utilizador selecciona uma linha da tabela das Categorias. Um duplo clique num Select abre o respectivo método de tratamento de eventos, no ficheiro MasteDetailEmCodigoComDataReader.aspx.cs: protected void gvcategorias_selectedindexchanged(object sender, EventArgs e) int idcat = (int)gvcategorias.selecteddatakey.value; DAL dal = new DAL(); gvprodutos.datasource = dal.getprodutosbyidcategoria(idcat); gvprodutos.databind(); dal.closeconnection(); 3. Testar a página Premir Ctrl + F5 ou com o botão direito do rato em cima do nome da página MasteDetailEmCodigoComDataReader.aspx seleccionar View in Browse. D Actualizar, Inserir, e Apagar (Update, Insert and Delete) programaticamente com o controlo DetailsView Vamos exemplificar como actualizar, inserir ou remover registos de uma tabela (tabela produtos) usando o controlo Data-bound Web Server (Controlo Servidor Web ligado a dados) DetailsView. 1. Acrescentar uma página ao Web Site Add New Item > Web Form e mudar o nome da página para ActualizarRegistos.aspx 2. Adicionar um controlo DetailsView Para posicionar o controlo DetailsView na página podemos começar por adicionar à página, em modo Design, uma tabela de 3 linhas por 3 colunas, fazendo: Layout > Insert Table Arrastar DetailsView Smart Tag > Edit Fields Para cada campo da tabela Produtos efectuar o seguinte: em Available Fields: seleccionar BoundField e premir o botão Add para adicionar um campo aos Selected Fields. Este campo apresentará dados ligados a um campo da tabela. Para indicar qual o campo da tabela, nas propriedades do Bound Field, no grupo

Data preencher a propriedade DataField. Para escolher uma designação para este campo no grupo Appearence preencher a propriedade Header Text: BoundField > Properties > DataField = IdProd; Header Text = Id do Produto BoundField > Properties > DataField = IdCat; Header Text = Id da Categoria BoundField > Properties > DataField = NomeProd; Header Text = Nome do Produto BoundField > Properties > DataField = Preco; Header Text = Preço BoundField > Properties > DataField = Stock; Header Text = Stock O Bound Field IdProd deve ter a propriedade do grupo Behavior InsertVisible a False para que em modo de inserção não pareça o campo IdProd. Para carregar os dados da tabela Produtos no controlo DetailsView colocar no método Page_Load o seguinte código: protected void Page_Load(object sender, EventArgs e) if (!Page.IsPostBack) preencherdetailsview(); private void preencherdetailsview() DAL dal = new DAL(); DataSet ds = dal.getdatasetprodutos(); DetailsView1.DataSource = ds; DetailsView1.DataBind(); Seleccionar o controlo DetailsView e configurar as seguintes propriedades: No grupo Paging, AllowPaging a True. No grupo Behavior, AutoGenerateDeleteButton, AutoGenerateEditButton, e AutoGenerateInsertButton a True, e AutoGenerateRows a False. No grupo Data, DataKeyNames com o valor IdProd. Nas propridades do Controlo DetailsView seleccionar o separador Events, e no grupo Action efectuar duplo clique sobre PageIndexChanging, ItemDeleting, ItemInserting, ItemUpdating, e ModeChanging. O evento ModeChanging é desencadeado quando o controlo DetailsView tenta mudar entre o modo edit, insert ou read-only. A propriedade CurrentMode do controlo DetailsView pode ter 3 valores: DetailsViewMode.Edit DetailsViewMode.Insert DetailsViewMode.ReadOnly O método ChangeMode() do controlo DetailsView permite mudar o seu modo.

Colocar o seguinte código nos métodos de tratamento de eventos: protected void DetailsView1_PageIndexChanging(object sender, DetailsViewPageEventArgs e) DetailsView1.PageIndex = e.newpageindex; preencherdetailsview(); protected void DetailsView1_ItemDeleting(object sender, DetailsViewDeleteEventArgs e) DAL dal = new DAL(); int idprod = Convert.ToInt32(DetailsView1.DataKey.Value); dal.deleteproduto(idprod); preencherdetailsview(); protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e) DAL dal = new DAL(); lercamposdoregisto(); dal.insertproduto(idcat, nome, preco, stock); DetailsView1.ChangeMode(DetailsViewMode.ReadOnly); preencherdetailsview(); private int idcat; private string nome; private double preco; private int stock; private void lercamposdoregisto() idcat = Convert.ToInt32( ((TextBox)DetailsView1.Rows[1].Cells[1].Controls[0]).Text); nome = ((TextBox)DetailsView1.Rows[2].Cells[1].Controls[0]).Text; preco = Convert.ToDouble( ((TextBox)DetailsView1.Rows[3].Cells[1].Controls[0]).Text); stock = Convert.ToInt32( ((TextBox)DetailsView1.Rows[4].Cells[1].Controls[0]).Text); protected void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e) int idprod = Convert.ToInt32(DetailsView1.DataKey.Value); DAL dal = new DAL(); lercamposdoregisto(); dal.updateproduto(idprod, idcat, nome, preco, stock); DetailsView1.ChangeMode(DetailsViewMode.ReadOnly); preencherdetailsview();

protected void DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e) if (e.newmode == DetailsViewMode.Edit) DetailsView1.ChangeMode(DetailsViewMode.Edit); else if (DetailsView1.CurrentMode == DetailsViewMode.Edit && e.cancelingedit) DetailsView1.ChangeMode(DetailsViewMode.ReadOnly); else if (e.newmode == DetailsViewMode.Insert) DetailsView1.ChangeMode(DetailsViewMode.Insert); else if (DetailsView1.CurrentMode == DetailsViewMode.Insert && e.cancelingedit) DetailsView1.ChangeMode(DetailsViewMode.ReadOnly); preencherdetailsview(); Na classe DAL acrescentar o seguinte código: private void getconnection() conn = new OleDbConnection(); conn.connectionstring = CONN + DBPATH; conn.open(); public void closeconnection() dr.close(); conn.close(); public OleDbDataReader getcategorias() getconnection(); string strsql = "Select * From Categorias"; cmd.commandtext = strsql; dr = cmd.executereader(); return dr; public OleDbDataReader getprodutosbyidcategoria(int codigo) getconnection(); string strsql = "Select * From Produtos Where IdCat=?"; cmd.commandtext = strsql; cmd.parameters.addwithvalue("idcat", codigo); dr = cmd.executereader(); return dr;

public DataSet getdatasetprodutos() getconnection(); string strsql = "Select * From Produtos"; cmd.commandtext = strsql; OleDbDataAdapter da = new OleDbDataAdapter(); da.selectcommand = cmd; DataSet ds = new DataSet(); da.fill(ds); return ds; public int updateproduto(int idprod, int idcat, string nomeprod, double preco, int stock) getconnection(); string strsql = "Update Produtos SET IdCat=?, NomeProd=?, Preco=?, Stock=? Where IdProd=?"; cmd.commandtext = strsql; cmd.parameters.addwithvalue("idcat", idcat); cmd.parameters.addwithvalue("nomeprod", nomeprod); cmd.parameters.addwithvalue("preco", preco); cmd.parameters.addwithvalue("stock", stock); cmd.parameters.addwithvalue("idprod", idprod); int resultado = cmd.executenonquery(); conn.close(); return resultado; public int insertproduto(int idcat, string nomeprod, double preco, int stock) getconnection(); string strsql = "Insert Into Produtos (IdCat, NomeProd, Preco, Stock ) values (?,?,?,?)"; cmd.commandtext = strsql; cmd.parameters.addwithvalue("idcat", idcat); cmd.parameters.addwithvalue("nomeprod", nomeprod); cmd.parameters.addwithvalue("preco", preco); cmd.parameters.addwithvalue("stock", stock); int idprod = cmd.executenonquery(); conn.close(); return idprod; public int deleteproduto(int idprod) getconnection(); string strsql = "Delete From Produtos Where IdProd=?"; cmd.commandtext = strsql; cmd.parameters.addwithvalue("idprod", idprod); int resultado = cmd.executenonquery(); conn.close(); return resultado;

Para informação mais detalhada ver: Mostrar dados de uma base de dados Microsoft Access num controlo GridView: Walkthrough: Creating a Web Page to Display Access Database Data Mostrar dados de uma base de dados Microsoft SQL Server num controlo GridView com Ordenação e Paginação: Walkthrough: Basic Data Access in Web Pages Trabalhar com registos entre os quais exista uma relação master-detail: Walkthrough: Creating Master/Detail Web Pages in Visual Studio Editar e Inserir Registos: Walkthrough: Editing and Inserting Data in Web Pages with the DetailsView Web Server Control Criar um componente de acesso a dados e usá-lo como fonte de dados numa página: Walkthrough: Data Binding to a Custom Business Object Tutorial 1: Creating a Data Access Layer Tutorial 1: Creating a Data Access Layer Tutorial 2: Creating a Business Logic Layer Tutorial 2: Creating a Business Logic Layer Tutorial 3: Master Pages and Site Navigation Tutorial 3: Master Pages and Site Navigation Tutorial 16: An Overview of Inserting, Updating, and Deleting Data Tutorial 16: An Overview of Inserting, Updating, and Deleting Data ASP.NET Quickstart Tutorials - Binding to Objects Binding to Objects