Avatar billede kak Nybegynder
13. januar 2006 - 08:58 Der er 14 kommentarer og
2 løsninger

Databasekald i codebehind-fil

Jeg har lavet en del asp, og har nu kastet mig over asp.net, men har lidt problemer med at få databasekald til at virke.

Jeg vil gerne lave en funktion i min codebehind-fil, så jeg let kan kalde databasen. Er der nogen der kan give et eksempel på, hvordan det gøres (både selve kaldet fra .aspx-filen og funktionen i codebehind)?
Avatar billede arne_v Ekspert
13. januar 2006 - 18:30 #1
Avatar billede snepnet Nybegynder
14. januar 2006 - 13:46 #2
du kan også benytte en or-mapper, som f.eks. denne:
http://sourceforge.net/projects/gopf
mvh
Avatar billede kak Nybegynder
16. januar 2006 - 09:02 #3
Jeg vil helst undgå et 3.parts komponent, og er det ikke det du henviser til, snepnet?

arne_v, jeg får ikke så meget ud af dit link, men jeg må også indrømme at jeg ikke læste det helt igennem (dovenskaben længe leve :-) Jeg ville gerne have haft et konkret eksempelt.

Jeg har dog fundet frem til, hvordan jeg kan lægge databasekaldet i code-behind filen, men jeg kan ikke lige se, hvordan jeg kan lave den generelt for alle sider? I code-behind filen laver jeg en "public class minside" og i aspx-siden, laver jeg en "inherits=minside". Så passer de to sammen, men hvordan kan jeg gøre, hvis jeg ønsker at have en funktion/sub jeg kan kalde fra alle filerne?

Jeg kan jo ikke bare lave det med inherits, da nogle af funktionerne kun skal passe til den enkelte side.
Avatar billede snepnet Nybegynder
16. januar 2006 - 09:10 #4
Jo - det er en 3.parts komponent.
det arne henviser til ser sådan set et konkret eksempel - har du prøvet at installere det?
mvh
Avatar billede snepnet Nybegynder
16. januar 2006 - 09:11 #5
... ER sådan set... (ikke ser sådan set).
mvh
Avatar billede kak Nybegynder
16. januar 2006 - 09:11 #6
Jeg har ikke installeret det arne henviser til, men det vil jeg lige prøve.
Avatar billede snepnet Nybegynder
16. januar 2006 - 09:18 #7
nu er der jo mange måder at lave den slags på, men mht. dit spørgsmål.
du kan sagtens lave dig en baseklasse for alle dine forms, og så lægge noget kode i den. du skal så bare arve fra den, hvilket kun skal angives i din codebehind:

public class SomeForm : DinBaseklasse

og ellers kan du bare lægge din kode i en klasse for sig, og kalde den fra dine sider på helt almindelig vis.

har du en klasse

public class SomeClass
{
  public string GetString()
  {
    return "string";
  }
}

bruger du den bare fra dine formklasser som enhver anden type:

SomeClass instance = new SomeClass();
someLabel.Text = instance.GetString();

men det er ikke unormalt for sådan noget du skal til, at lave en klasse med nogle static metoder, du kan kalde hvorfra du vil (sålænge du har adgang til det namespace det nu ligger i).

public class SomeClass
{
  public static string GetString()
  {
    return "string";
  }
}

på den måde kan du tilgå funktionaliteten uden at instantiere klassen - sådan her:

someLabel.Text = SomeClass.GetString();

mvh
Avatar billede kak Nybegynder
17. januar 2006 - 14:25 #8
snetpnet, det ligner det jeg har brug for! Jeg laver det dog i vb, og jeg kan ikke umiddelbart få konverteres dit eksempelt, så det virker. I hvert fald jeg problemer at kalde funktionen fra min code-behind fil.

Kan du give et eksempel på det i vb, eller kender du et link til en side der viser eksempler?
Avatar billede kak Nybegynder
17. januar 2006 - 14:52 #10
Jeg tror efterhånden jeg er kommet så langt, at jeg kan få det til at virke. Jeg har i hvert fald lavet nogle små test-funktioner, som kører som de skal.

snepnet, vil du smide et svar så du kan få dine point?
Avatar billede snepnet Nybegynder
17. januar 2006 - 14:55 #11
oki .... husk også arne.
mvh
Avatar billede kak Nybegynder
17. januar 2006 - 15:00 #12
Godt du sagde det... jeg havde overset at han gav mig det link. Arne, vil du også smide et svar, så jeg kan lukke?
Avatar billede kak Nybegynder
19. januar 2006 - 10:17 #13
Arne, ville du smide et svar?

snepnet, det kan være du kan svare på et andet lille spørgsmål.... jeg har en side hvor man vælger et punkt på en dropdown-liste, og ud fra det valg hentes data i en database. Disse data sættes ind i nogle andre felter, f.eks. sådan her:
mittextfelt.text = rs("datafelt")

Men fleterne i db'en kan godt indeholde null, og det kan man åbenbart ikke sætte ind i text-felterne. Ved du hvordan man kommer uden om det problem?
Avatar billede snepnet Nybegynder
19. januar 2006 - 10:46 #14
du kan gøre sådan noget i denne stil:

If rs.IsDBNull(0) Then
  mittextfelt.Text = "-"
Else
  mittextfelt.Text = rs(0).ToString

mvh
Avatar billede kak Nybegynder
19. januar 2006 - 12:14 #15
Ok. Det var også sådan noget lign. jeg var kommet frem til, men tænkte at der måske var en bedre løsning.
Avatar billede arne_v Ekspert
19. januar 2006 - 14:08 #16
svar
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