rytyeyyey

  • 424 views
Uploaded on

fgv

fgv

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
424
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ADO1 Visual Studio 2008 New Web Site: ADO1 em C:UtilizadorsFernando2009-2010ARQSITP6 1 – Arrastar para App_Data o ficheiro loja.mdb 2 – Add New Item … WebForm DataReaderProg.aspx - Acesso à base de dados por código – programaticamente - Uso do objecto DataReader para ler uma tabela da base de dados - Apresenta a tabela Categorias num GridView Controlos: Label: Acesso à Base de Dados por código GridView Necessário acrescentar: using System.data.OleDb; private const string CONN = @"Provider=Microsoft.Jet.OLEDB.4.0;User ID=;"; private const string DBPATH = @"Data Source=|DataDirectory|/loja.mdb"; protected void Page_Load(object sender, EventArgs e) { string strConn = CONN + DBPATH; OleDbConnection conn = new OleDbConnection(strConn); conn.Open(); OleDbCommand cmd = new OleDbCommand(); string strSql = "Select * From Categorias"; cmd.Connection = conn; cmd.CommandText = strSql; OleDbDataReader dataReader = cmd.ExecuteReader(); GridView1.DataSource = dataReader; GridView1.DataBind(); dataReader.Close(); conn.Close(); } 3 - Add New Item … WebForm DataReaderProg2.aspx - Acesso à base de dados por código - Uso do objecto DataReader para ler uma tabela da base de dados - Apresenta a tabela Categorias num DropDownList e num RadioButtonList Controlos: DropDownList RadioButtonList
  • 2. . . . string strSql = "Select * From Categorias"; cmd.Connection = conn; cmd.CommandText = strSql; OleDbDataReader dataReader = cmd.ExecuteReader(); RadioButtonList1.DataSource = dataReader; RadioButtonList1.DataTextField = "Nomecat"; RadioButtonList1.DataValueField = "IdCat"; RadioButtonList1.DataBind(); dataReader.Close(); dataReader = cmd.ExecuteReader(); DropDownList1.DataSource = dataReader; DropDownList1.DataTextField = "Nomecat"; DropDownList1.DataValueField = "IdCat"; DropDownList1.DataBind(); dataReader.Close(); conn.Close(); } } 4 - Master-Detail em 2 páginas Add New Item … WebForm DataReaderProg3.aspx - Acesso à base de dados por código - Uso do objecto DataReader para ler uma tabela da base de dados - Apresenta a tabela Categorias numa lista de hyperlinks colocados num objecto Panel. Cada hyperlink invoca uma página com os produtos da cada categoria. Controlos: Label: Iteracção sobre um DataReader para criação de hyperlinks Panel: Panel1 . . . string strSql = "Select * From Categorias"; cmd.Connection = conn; cmd.CommandText = strSql; OleDbDataReader dataReader = cmd.ExecuteReader(); while (dataReader.Read()) { HyperLink hyperLink = new HyperLink(); hyperLink.Text = dataReader.GetString(1); // hyperLink.Text = (string) dataReader["NomeCat"]; hyperLink.NavigateUrl = "Produtos.aspx?idCat=" + dataReader.GetInt32(0); Panel1.Controls.Add(hyperLink); Panel1.Controls.Add(new LiteralControl("<p />")); }
  • 3. dataReader.Close(); conn.Close(); 2.ª Página: Produtos.aspx Label: Produtos da Categoria: [Label2] GridView HyperLink: Text: Voltar NavigatURL: ~/DataReaderProg3.aspx try { int idCat = int.Parse(Request.QueryString["idCat"]); string strConn = CONN + DBPATH; OleDbConnection conn = new OleDbConnection(strConn); conn.Open(); OleDbCommand cmd = new OleDbCommand(); string strSql1 = "Select NomeCat From Categorias Where IdCat=" + idCat; cmd.Connection = conn; cmd.CommandText = strSql1; OleDbDataReader dataReader = cmd.ExecuteReader(); string nomeCat =""; if (dataReader.Read()) nomeCat = dataReader.GetString(0); dataReader.Close(); Label2.Text = nomeCat; string strSql2 = "Select * From Produtos Where IdCat=" + idCat; cmd.CommandText = strSql2; dataReader = cmd.ExecuteReader(); GridView1.DataSource = dataReader; GridView1.DataBind(); dataReader.Close(); conn.Close(); } catch (System.Exception) { Response.Redirect("DataReaderProg3.aspx"); } Master-Detail em 2 páginas Base de Dados: loja.mdb Tabelas: Categorias (IdCat, NomeCat) Produtos (IdProd, IdCat, NomeProd, Preco, Stock)
  • 4. 5 – Master-Detail numa única página sem DAL, lista de links + GridView Add New Item … WebForm MasterDetailSemDAL.aspx - Acesso à base de dados por código - Uso do objecto DataReader para ler uma tabela da base de dados - Apresenta a tabela Categorias numa lista de hyperlinks colocados num objecto Panel. Cada hyperlink invoca a própria página com os produtos da cada categoria. Tabela 2x2 Categorias: Produtos: Painel com hyperlinks GridView 6 – Master-Detail numa única página com DAL, lista de links + GridView - Acesso à base de dados por código - Uso do objecto DataReader para ler uma tabela da base de dados - Apresenta a tabela Categorias numa lista de hyperlinks colocados num objecto Panel. Cada hyperlink invoca a própria página com os produtos da cada categoria. Add New Item … WebForm MasterDetailComDAL.aspx Add New Item … Class DAL.cs Sim, colocar no folder App_Code Tabela 2x2 Categorias: Produtos: Painel com hyperlinks GridView 7 – Master-Detail numa única página com DAL, usando DataSet e lista de links + GridView Add New Item … WebForm MasterDetailDataSetComDAL.aspx - Acesso à base de dados por código - Uso do objecto DataReader para ler uma tabela da base de dados - Apresenta a tabela Categorias num GridView, tendo cada linha um hyperlink Seleccionar. Cada hyperlink invoca a própria página com os produtos da cada categoria. 8 – Master-Detail numa única página com DAL, usando 2 GridViews Add New Item … WebForm MasterDetail2GridView.aspx - Acesso à base de dados por código - Uso do objecto DataReader para ler uma tabela da base de dados
  • 5. - Apresenta a tabela Categorias num GridView, tendo cada linha um hyperlink Seleccionar. Cada hyperlink invoca a própria página com os produtos da cada categoria. Tabela 2x2 Categorias: Produtos: GridView GridView GridView1: EditColumns … Desseleccionar (desmarcar) Auto-generate fields (AutoGenerateColumns = false) BoundField > DataField = NomeCat Não é necessário>> BoundField > DataField = IdCat e Visible = False CommandField (Select) Select: Button Type = Link ShowSelectButton = True Em Properties: DataKeyNames = IdCat Duplo clique no hyperlink Select abre o método GridView1_SelectedIndexChanged(…, …) Têm de ser especificadas chaves de dados na GridView 'GridView1' antes de ser possível obter as chaves de dados seleccionadas. Utilize a propriedade DataKeyNames para especificar chaves de dados. 9 – Master-Detail numa única página com DAL, usando 2 GridViews, com criação de uma nova coluna no DataSet Add New Item … WebForm MasterDetail2GridViewCriaColuna.aspx - Acesso à base de dados por código - Uso do objecto DataSet para ler uma tabela da base de dados Página obtida por cópia da página MasterDetail2GridView.aspx. Rename para MasterDetail2GridViewCriaColuna.aspx. Edição do ficheiro MasterDetail2GridViewCriaColuna.aspx: no cabeçalho alterado em Inherits (1): CodeFile="MasterDetail2GridViewCriaColuna.aspx.cs" Inherits="MasterDetail2GridViewCriaColuna" Edição do ficheiro MasterDetail2GridViewCriaColuna.aspx.cs: no nome da classe (1): public partial class MasterDetail2GridViewCriaColuna : ...
  • 6. ficheiro MasterDetail2GridViewCriaColuna.aspx.cs: protected void GridView1_SelectedIndexChanged( object sender, EventArgs e) { DAL dal = new DAL(); int idCat = (int)GridView1.SelectedDataKey.Value; DataSet ds = dal.getDataSetProdutosByIdCategoriaAdicionaColuna(idCat); GridView2.DataSource = ds; GridView2.DataBind(); dal.closeConnection(); } DAL.cs: public DataSet getDataSetProdutosByIdCategoriaAdicionaColuna(int idCat) { getConnection(); OleDbCommand cmd = new OleDbCommand(); string strSql = "Select * From Produtos Where IdCat=?"; cmd.Connection = conn; cmd.CommandText = strSql; cmd.Parameters.AddWithValue("idCat", idCat); OleDbDataAdapter da = new OleDbDataAdapter(); da.SelectCommand = cmd; DataSet ds = new DataSet(); da.Fill(ds, "Produtos"); // criacao de uma coluna nova no dataSet DataColumn dc = new DataColumn("Valor Total"); dc.Expression = "Preco * Stock"; ds.Tables[0].Columns.Add(dc); return ds; } 10 –