Fordelaktig.no
Webutvikler kurs ASP.NET, C#, CSS mm.

WebRessurs.no - Webprogrammering og ressurs innen ASP, ASP.NET, PHP, SQL, HTML, CSS, Javascript, XML, C#, VB, Flash  mm.

Brukernavn: 
Passord:

Registrèr deg Glemt passord?
Logg deg inn




  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 (603)
  Link galleri (566)


  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
  Gratis epost
  WebMail


  Bli medlem!
  Siste innlegg
  Gjestebok
  Tips en venn
  Kontakt oss
  Forsiden




Kode Artikler
Linker


Mål internetthastigheten din.


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:



Illustrasjonsbilde



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



WebRessurs.no anbefaler:    StackOverflow.com | Experts-Exchange.com | W3schools | ASP.NET | Codeproject | 4Guys
WebRessurs.no er utviklet og drives av SoftMaker LTD
Sett som startside: [ ]. Bokmerk denne siden: [ klikk ]. Sitemap. http://twitter.com/webressurs_no/. Antall brukersesjoner: 9279865.
Copyright WebRessurs.no © 2003 - 2015
Turvenn.no