Avatar billede mosekongen Nybegynder
17. september 2002 - 12:24 Der er 4 kommentarer og
1 løsning

Inherits og Page_Load!

Hej

Jeg har en aspx side, hvor jeg har en dropdownlist som der skal fyldes med data fra database. Jeg har adskilt min kode således, at jeg har en cs fil, der skal fylde min dropdownlist i aspx filen.

Min aspx fil:
<%@ Page Language="C#" Inherits="PCV.Projekt" codebehind="Projekt.cs" Trace="true" Debug="true" %>
<%@ import Namespace="PCV" %>

<script runat="server">
 
    void Page_Load(Object sender, EventArgs e)
    {       
        Projekt projekt =  new Projekt();
        projekt.hentProjekter();
    }
</script>
og så selvfølgelig min dropdownlist kaldet "projekt" nede i html delen.

Min cs fil:
namespace PCV {   
    using PCV;
    using System;
    using System.Data.OracleClient;
    using System.Web;   
    using System.Web.UI;
    using System.Web.UI.WebControls;

    public class Projekt : Page{
   
    protected DropDownList projekter = new DropDownList();   
   
        public Projekt(){
        }       
               
        public void hentProjekter(){ 
        //Pre:  None
        //Post: Dropdownlisten i aspx filen er fyldt med data fra datasen, ud fra angivet
        // sql sætning.
            string sql = "SELECT navn FROM PROJEKTER";
            DBTilgang db = new DBTilgang();
            projekter.DataTextField  = "NAVN";
            projekter.DataSource = (db.sqlSelect(sql)).Tables["NAVN"].DefaultView;
            projekter.DataBind();                         
        }
    }//ends class
}//ends namespace

Mit PROBLEM ligger i at jeg ikke får vist noget i dropdownlisten når jeg eksekverer aspx filen. Det virker derimod når jeg opretter en Page_Load i min Projekt klasse, og kalder hentProjekter derfra. Hvorfor? og kan nogen hjælpe?

/Mosekongen
Avatar billede kichian Nybegynder
17. september 2002 - 12:56 #1
Som du kan se i din Page_Load, så skal metoden hentProjekter selvfølgelig kaldes før data bliver indlæst.

Det kan ske automatisk hvis du placerer kaldet til hentProjekter i Kontruktøren Projekt.
Avatar billede mosekongen Nybegynder
17. september 2002 - 15:08 #2
Det virker heller ikke. Stadig intet indhold i dropdownlisten.
Jeg kan heller ikke se hvilken forskel det gør at flytte hentProjekter metoden, da udførelsen af dem stadig vil ske i samme rækkefølge.
Avatar billede z42cool Nybegynder
18. september 2002 - 10:37 #3
I din Page_Load i aspx filen opretter du en helt ny instans af klassen Projekt. Denne NYE instans arbejder med sin egen projekter variabel der intet har at gøre med din projekter kontrol på siden.

    public class Projekt : Page{
   
        public Projekt(){
        }       
               
        public void hentProjekter(DropDownList projekter){ 
        //Pre:  None
        //Post: Dropdownlisten i aspx filen er fyldt med data fra datasen, ud fra angivet
        // sql sætning.
            string sql = "SELECT navn FROM PROJEKTER";
            DBTilgang db = new DBTilgang();
            projekter.DataTextField  = "NAVN";
            projekter.DataSource = (db.sqlSelect(sql)).Tables["NAVN"].DefaultView;
            projekter.DataBind();                         
        }
    }//ends class
Avatar billede z42cool Nybegynder
18. september 2002 - 10:38 #4
<script runat="server">
 
    void Page_Load(Object sender, EventArgs e)
    {       
        hentProjekter(id_på_din_dropdownlist);
    }
</script>
Avatar billede mosekongen Nybegynder
18. september 2002 - 15:01 #5
Det virker endelig. Pointene og en stor tak går til z42cool.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester