Toon posts:

[VB.NET] Codebehind, hoe werkt dat precies?

Pagina: 1
Acties:
  • 85 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo allemaal

Ik ben de laatste tijd een beetje aan 't programmeren in ASP.net (met als language VB.NET). Dat lukt heel aardig, maar alle voorbeelden die ik nu heb gezien, werken niet met codebehinds.

Ik heb het boek basiscursus asp.net doorgewerkt, de site http://www.microsoft.com/netherlands/msdn/aspnet/menu.aspx (nederlandstalige training van microsoft) en heb veel rondgeneusd op het internet, en kan ondertussen aardig uit de voeten met de taal.

Wat ik mis, is een heldere uitleg over hoe code behindfiles eruit moeten zien. Tot nu toe dus altijd zonder gewerkt, en ik heb grote moeite om het om te zetten naar een format met .aspx pagina's met een aspx.vb file als codebehind. (niet dat omzetting noodzakelijk is, maar ik wil daar ook eens mee werken).
Vaak zie je óf alleen uitleg in een niet-codebehind voorbeeld, óf een situatie waarin codebehind wordt gebruikt, en het niet wordt uitgelegd waarom dat zo moet (en als ik het dan overneem, krijg ik allerlei compilatie-errors)

Kan iemand mij zeggen waar ik goede documentatie vind over hoe dat werkt met codebehind files?

Een heel simpele codebehind lukte me al wel (dus 't gaat niet om hoe je in de .aspx file de codebehindfile aanroept); het gaat meer om wat erin zo'n codebehindfile kan staan, en hoe je daar wat ingewikkeldere dingen doet dan alleen een button-click afhandelen (bijvoorbeeld hoe je database queries daar kan afhandelen en andere sub-routines, die bijv. door het indrukken van een knopje worden aangeroepen).

Ik heb het volgende werkend gekregen:
D.m.v. het aanklikken van de knop, wordt ervoor gezorgd dat een label wordt gevuld.
Zodra ik iets uit de database wil halen (zie ook het voorbeeld) mislukt het.

Ik geen foutmeldingen, en momenteel ook geen idee waarom het mislukt...

Code:
default.aspx

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 <%@ Page Src="WebForm1.aspx.vb" trace="true" Inherits="WebForm1" Language="VB" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>WebForm1 Code-Behind Test</title>
</head>
<body>
<a href="default.aspx">refresh</a>
    <form id="Form1" method="post" runat="server">
        <asp:Button id="Button1" runat="server" Text="Hoe laat is het nu?"></asp:Button>
        <asp:Label id="Label1" runat="server">Label</asp:Label>
        <br>
        <asp:Button id="knop2" runat="server" Text="Button"></asp:Button>
        <asp:Label id="Label2" runat="server">Label</asp:Label>
    </form>
</body>
</html>


webform1.aspx.vb:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Imports System
Imports System.Web.UI.WebControls
Imports System.Web.UI
Imports System.Data
Imports System.Data.OleDb

Public Class WebForm1
Inherits System.Web.UI.Page

Public ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data source=d:\www\business-develop.org\database\test.mdb;"
Public myConnection As New OleDbConnection(ConnectionString)
Public CommandText = "SELECT * FROM users"
Public myCommand As New OleDbCommand(CommandText, myConnection)
Public DataReader as OleDbDataReader


    Protected WithEvents Button1 As System.Web.UI.WebControls.Button
    Protected WithEvents Label1 As System.Web.UI.WebControls.Label
    Protected WithEvents Label2 As System.Web.UI.WebControls.Label


    Private Sub Button1_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles Button1.Click
Label1.Text=System.DateTime.Now


    End Sub

Sub Page_load()
myConnection.Open()
DataReader = myCommand.ExecuteReader()
while DataReader.Read()
trace.Warn(DataReader("Uname"))
Label2.Text = DataReader("Uname")
end while
DataReader.Close()
myConnection.Close()
End Sub


End Class 


Probleemanalyse
Ik heb een trace.Warn() ingevoegd in de whille loop, waar de databasegegevens gelezen moeten worden. In mijn trace, vind ik netjes de waarden uit de 4 records terug. Dus, de gegevens worden wel uit de database gehaald, maar niet aan de label gekoppeld...

Ik mis kennis van de syntax van codebehind files; hoe werktdat?

Hoe is zo'n file opgebouwd...

Iemand die me een stapje verder kan helpen, of een duidelijke link kan geven naar een pagina die dit beschrijft?

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Heb je wat aan de resultaten die je krijgt als je [google=.NET what is codebehind]?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 14-02 20:26
Voor documentatie op het gebied van .NET moet je gewoon de MSDN hebben. Voor de rest gewoon een zoekmachine proberen, want over ASP.net en Codebehind is enorm veel geschreven en publisheert, ook veel tutorials e.d.

Verwijderd

Topicstarter
Uhm....

Ik ben bang van niet. Er is een uitgebreide google tocht geweest (en heb uiteraard net even op je link gekeken). Antwoorden die ik daar vind is:
1: Wat is het idee van codebehind (scheiding programming logic van layout)
2: Voorbeelden vaak in andere talen (bijv. C#)
3: Discussies over inline of via codebehind
4: zelf compilen of dat overlaten aan asp.net
5: veel voorbeelden waarin wordt uitgelegd hoe Visual studio.net (semi)automatisch de codebehind voor je maakt

Dat is ongeveer wat ik niet zoek...

Ik zoek hoe het zit met de opbouw van zo'n codebehind pagina...

Ik denk dat veel programmeurs van VB.net
1: óf werken met Visual Studio .net (waarbij codebehinds (semi-)automatisch gemaakt worden)
2: óf bijv. door hun opleiding of andere programmeer achtergrond, al kennis hebben van hoe zo'n pagina eruit moet zien.

Ik ben vooral thuis in php als programmeertaal, wat gewoon erg anders werkt. Ok, dat verandert, nu php 5 Object Oriented programming ondersteunt, maar goed, ik ben er niet echt in thuis...

Zoals zichtbaar is, heb ik een voorbeeld die ik dus ook gewoon wel snap. Maar ik snap in dit voorbeeld bijvoorbeeld niet, waarom die label2, niet gewoon de waarden krijgt op het scherm.

@ Door: Sybr_E-N
Ik heb bijvoorbeeld
How to work with code-behind class files in an ASP.NET application by using Visual Basic .NET
gezien, maar volgens mij gaat ook die pagina er vanuit dat er met visual studio wordt gewerkt...

Ik werk met de WebMatrix. Dan moet het toch ook kunnen?

[ Voor 9% gewijzigd door Verwijderd op 23-08-2006 13:04 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 14-02 20:35
Ik denk dat jij eerder een tutorial nodig hebt over .NET, over hoe je met de talen werkt, want of je nu inline werkt, of met code-behind, de taal constructies blijven dezelfde.

In Label2 zal zowiezo slechts 1 waarde zichtbaar zijn, en dat komt omdat je de waarde steeds overschrijft. Stap eens met de debugger stap voor stap door je code, dan zal je zien wat er gebeurt.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Hmz, de code deed inderdaad al meer dan ik dacht (ik zag even niet dat er al een database waarde op het scherm kwam in Label2)...

En inderdaad, als ik er
Label2.Text &= DataReader("Uname")
van maak, staan alle waarden op het scherm...

Bedankt dus dat me nu duidelijk is dat m'n code beter werkte dan ik dacht...

Toch blijft nog wel een deel van m'n vraag staan (hoewel dit voorbeeld dus kennelijk gewoon werkte, terwijl ik dat niet zag).

Uit een voorbeeld heb ik dit maar gewoon overgenomen:
Protected WithEvents Label2 As System.Web.UI.WebControls.Label

Het verschil tussen private, protected en public, is veel over te lezen (en dat is in veel talen gebruikt)

Maar zoiets als WithEvents

Handles Button1.Click

Dat soort dingen moet ik (kennelijk) ineens wel gebruiken in mijn codebehind, maar niet inline (voor zover ik weet; in ieder geval kan ik inline zonder die dingen).

Is er nergens een overview van wat al die termen betekenen?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14-02 12:34

gorgi_19

Kruimeltjes zijn weer op :9

Dat handles heeft te maken met het toevoegen van EventHandlers

Maar dit is gewoon 'leren programmeren'; C#, VB.Net, etc kennen allemaal Events, Delegates, etc. Weliswaar in een andere syntax, maar het principe blijft hetzelfde. Met een overzicht kom je er niet, je kan je beter verdiepen in tutorials / een leerboek :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Thnx in ieder geval voor dit 'duwtje' in de rug; ik had na een lange gisteravond gewoon 't gevoel dat ik 't niet voor elkaar kreeg.

En ehm ja, dat het te maken heeft met 'leren programmeren' geloof ik wel, want de meesten blijken zich dit niet af te vragen. In php heb ik daar (nog) niet echt last van gehad...

Ik heb weer wat nieuwe zoekwoorden, en ik kan weer verder met m'n 'first codebehind' project; 't begint me nu allemaal iets duidelijker te worden...

En juist die tutorials ben ik naar op zoek; ik denk dat het me met die nieuwe zoekwoorden miss. beter lukt...

  • giMoz
  • Registratie: Augustus 2002
  • Laatst online: 21-01 09:10

giMoz

iets met meester...

php is ook niet event driven maar een scripting taal, en dat is een groot verschil

Of niet natuurlijk...


  • whoami
  • Registratie: December 2000
  • Laatst online: 14-02 20:35
Dit is idd gewoon leren programmeren.
Ik zou zeggen: neem een tutorial of boek bij de hand dat handelt over OOP, .NET, VB.NET, etc...

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.