|
ASP.net (199)
ASP 3.0 (111)
PHP (30)
HTML (66)
SQL (89)
CSS (46)
XML (7)
JavaScript (78)
Diverse kode (13)
Programmering (22)
System og drift (15)
Trafikk og inntekt (11)
Guider og tips (22)
Nyttig lesestoff (23)
Web forum (604)
Link galleri (565)
ASP.NET kurs(5)
CSS kurs (2)
JQuery kurs (2)
Øk trafikken (8)
Facebook App. (4)
Microsoft CEO (6)
Server & web
Internett & epost
Systemverktøy
Sikkerhet
Fildeling
Lyd & media
Diverse software
Domenesalg
Metagenerator
Websikre farger
WebMail
Bli medlem!
Siste innlegg
Gjestebok
Tips en venn
Kontakt oss
Forsiden
|
|
Lær deg ASP.NET Del 4: Vise artikkelliste utifra valgt menypunkt Av: Øyvind A. Isaksen
I forrige del av kurset viste vi hvordan man lager en dynamisk meny som henter ut menypunktene fra databasen og viser dem på nettsiden vår. I denne delen av kurset går vi et steg videre, her viser vi hvordan man kan hente ut artikkellister fra databasen utifra hvilket menypunkt brukeren velger.
Opprett artikkel-tabell i databasen
Det første vi skal gjøre er å opprette en artikkel-tabell i databasen vår. Åpne SQL Server Management Studio og deretter databasen vår (Minside). Høyreklikk på "Tables" og velg "New Table...".
Hver artikkel skal bestå tittel, ingress og body -tekst. I tillegg trenger vi å lagre informasjon om hvilken kategori den enkelte artikkel tilhører. Vi legger også inn et felt som automatisk lagrer datoen når artikkelen ble opprettet.
Opprett følgende tabell:
Column Name Data Type Allows Nulls
ID smallint Ikke avkrysset
CategoryID tinyint Ikke avkrysset
Title varchar(64) Ikke avkrysset
Ingress varchar(2048) Ikke avkrysset
Body varchar(8000) Ikke avkrysset
Date smalldatetime Ikke avkrysset
ID setter du til å være primærnøkkel og velger "Yes" for Identity Spesification. På Date setter du
"Default Value or Binding" = getdate(). Dette vil automatisk legge inn tidspunktet når en artikkel blir opprettet i databasen.
Lagre så artikkel-tabellen med navnet tblArticles.
Legg inn artikler i databasen
Siden vi enda ikke har laget noen admin side for å administrere innholdet på nettsiden vår legger vi i denne omgang inn noen artikler direkte i databasen. Høyreklikk på tblArticle og velg "Edit Top 200 rows". Legg inn 2-3 artikler. Husk at 1 artikkel tilsvarer en rad i tabellen. Sett CategoryID = 1 på alle artiklene, dette er ID'en til kategorien "Nyheter". Vi skal senere se at disse artiklene vises på nettsiden når vi klikker på "Nyheter" i menyen på nettsiden.
Lage SQL spørring som henter ut ønskede artikler
Nå skal vi lage en Stored Procedure som henter ut artikler basert på CategoryID. På denne måten kan vi hente ut artikler for vår nyhetskategori, eller andre kategorier ved å endre på kategoriID'en. I databasen, ekspandèr "Programmability" mappen og høyreklikk på "Stored Procedures". Velg "New Stored Procedure". Fyll inn følgende og trykk på "Execute" for å lagre din SQL Spørring:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE spGetArticles
(
@CategoryID tinyint
)
AS
BEGIN
SET NOCOUNT ON;
SELECT id,title,ingress,body,date from tblArticles where CategoryID = @CategoryID ORDER BY id DESC
END
GO
Linke opp menyen til korrekt side
I Visual Web Developer, åpne så MasterPage fila som heter Default.master. Endre linken i Repeater'en (repMenu) slik at den peker til Articles.aspx i stedet for Default.aspx:
<a href='Articles.aspx?id=<%# DataBinder.Eval(Container.DataItem, "ID") %>'>
<%# DataBinder.Eval(Container.DataItem,"Name") %></a>
Nå skal vi opprette Articles.aspx fila i Templates mappen. Det er denne filen som skal liste ut artiklene våre når man klikker på et menypunkt. I Solution Explorer, høyreklikk på Templates mappen og velg "Add new Item". Velg "Web Form", fyll inn Articles.aspx i filnavn og kryss av for "Select master page". Klikk "Add" og velg å basere siden på fila "Default.master". Klikk "Ok".
Vise artikkellisten med en Repeater kontroll
Åpne fila Articles.aspx. Her legger vi inn en Repeater kontroll som benyttes til å liste ut artiklene i valgt kategori. Legg inn følgende kode:
<%@ Page Title="" Language="C#" MasterPageFile="~/Templates/Default.master" AutoEventWireup="true" CodeFile="Articles.aspx.cs" Inherits="Templates_Articles" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Main" Runat="Server">
<asp:Repeater runat="server" ID="repArticles">
<ItemTemplate>
<h1><%# DataBinder.Eval(Container.DataItem,"Title") %></h1>
<%# DataBinder.Eval(Container.DataItem, "Ingress") %>
<a href='Article.aspx?id=<%# DataBinder.Eval(Container.DataItem, "ID") %>'>Les mer</a><br /><br />
</ItemTemplate>
</asp:Repeater>
<asp:Label runat="server" ID="lblNoArticles" Visible="false" Text="<i>Beklager, ingen artikler i denne kategorien</i>" />
</asp:Content>
Det som nå gjenstår er å legge inn koden som binder data til repeaterkontrollen.
Åpne codebehind fila Articles.aspx.cs. Legg inn følgende kode:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
public partial class Templates_Articles : System.Web.UI.Page
{
public int CategoryId
{
get
{
if (Request.QueryString["id"] != null)
{
return int.Parse(Request.QueryString["id"]);
}
return 1;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindArticles();
}
}
private void BindArticles()
{
SqlConnection conn = new SqlConnection(Minside.Common.ConnString);
SqlCommand cmd = new SqlCommand("spGetArticles", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("CategoryID",CategoryId));
cmd.Connection.Open();
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
if (dt.Rows.Count == 0)
{
this.lblNoArticles.Visible = true;
}
else
{
this.repArticles.DataSource = dt;
this.repArticles.DataBind();
}
cmd.Connection.Close();
cmd.Dispose();
conn.Dispose();
}
}
Trykk F5. Nettsiden skal nå vises med artiklene i kategorien "Nyheter". Klikker du på noen av de andre menypunktene får du opp meldingen som sier at kategoien ikke inneholder noe innhold. Klikker du på "Nyheter" igjen vi du få opp artiklene du opprettet i databasen med CategoryID = 1:
Oppsummering
Vi har nå vist hvordan du henter ut artikler fra databasen utifra valgt menypunkt. Hvert menypunkt linker til en siden med navn "Articles.aspx" som har kategori Id som parameter. Utifra denne ID hentes korrekte artikler ut av databasen og binder dette til en Repeater kontroll.
Nedlasting av filer
Last ned hele prosjektet (del 1-4) her:
www.webressurs.no/kurs/aspnet/del4/MinSide.zip
|
|