Toon posts:

[ASP.Net] waardes doorgeven aan een .ascx file

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi collega developers,

Ik ben nog niet zo heel erg lang bezig met het programmeren in ASP.Net.
over het algemeen kom ik er erg goed uit en ben ik er goed over te spreken.
Maar toch heb ik nu een probleempje:

Met myn .aspx file roep ik een .ascx file aan. De ascx file maakt gebruik van textbox waardes. Hier heb ik echter een groot probleem, want in de page load kan ik de textbox waardes wel gewoon aan roepen met
............... voornaam = request.params("vnaam") ............
dat werk gewoon.
Normaliter in een aspx file zo ik dan de waarde van voornaam gewoon ook kunnen gebruiken in de sub van een button_click. Maar dit is niet het geval, want de waarde van voornaam is plots leeg als ik die ook wil gebruiken in de button_click sub.
Terwijl de page_load ze dood leuk gewoon toont via een label.
RARARARARA hoe kan dit.

Ik heb hier onder de ASCX file meegegeven (alleen het script gedeelte).

<script runat="server">

dim voornaam as string
dim achternaam as string
dim emailadres as string
dim nummer as string


sub page_load(o as Object, e as eventargs)

voornaam = request.params("tbVNaam")
achternaam = request.params("tbanaam")
emailadres = request.params("tbemail")
nummer = request.params("tbtelefoon")

' // deze hebben gewoon woorden en toont hij ook gewoon
label1.Text = voornaam
label2.Text = achternaam
label3.Text = emailadres
label4.Text = nummer

end sub

'connectie string
Dim objConn as new ODBCConnection ("DRIVER={MySQL ODBC 3.51 Driver};Server=localhost;Port=3306;Option=147992;Database=test;Uid=admin;Pwd=admin;")


Sub btCorrect_Click(o As Object, e As EventArgs)

' //deze voornaam is volledig leeg. terwijl het in de page_load gewoon al staat aan gegeven.
response.write(voornaam)

Dim objInsert as new OdbcCommand ( "insert into klant (klantvnaam, klantanaam, email, klantfoon) values ('" & voornaam & "', '" & achternaam & "','" & emailadres & "','" & nummer & "')",objConn)
objConn.Open()
objInsert.ExecuteNonQuery()
objConn.Close()
lbSucces.Text = "Het is goed door ingevoerd!"


Dim getalshow
Dim readerSelect1 As OdbcDataReader
Dim objSelect1 as new OdbcCommand ("select max(klantnummer) as getal from klant", objConn)

objConn.Open()
'de select wordt ingelezen
readerSelect1 = objSelect1.ExecuteReader()

'waarde word uit de reader gehaald
readerSelect1.read()
getalshow = readerSelect1.Getint32(0).ToString
'reader wordt geclost
'op deze manier kan er onder de connenctie zo een andere reader geopend worden
readerSelect1.close()
objConn.Close()
'----------------------------------------------------------------------------------------------------------
'variables gegenereerd, waaronder ook een datareader
Dim readerSelect2 as OdbcDataReader
Dim getalHoogste

Dim vermedigvuldiging as Integer
Dim objSelect2 as new OdbcDataAdapter ( "select * from klant where klantnummer = " & getalshow , objConn)

'// deze heb ik moeten commetaren om dat hij volledig op zijn smoel gaat als ik deze aan zet.Logische want de waardes waarmee hij gebruik van moet maken zijn leeg.
'de dataset wordt gevuld met de gegevens
dim ds as DataSet = new DataSet()
objSelect2.Fill(ds, "klant")

'hier worden de waardes geselecteerd en getoond via een grid die
'toonTabel genaamd is
toonTabel.DataSource = ds.Tables("klant").DefaultView
toonTabel.Databind()


End Sub

Sub btTerug_Click(sender As Object, e As EventArgs)

response.redirect("validatie.aspx?vnaam=" & label1.Text & "&anaam=" & label2.Text & "&email=" & label3.Text & "&telefoon=" & label4.Text)
End Sub

</script>

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 00:15

mulder

ik spuug op het trottoir

Ga eens wat lezen over variable scopes. voornaam is een local variable van Page_Load

oogjes open, snaveltjes dicht


  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 27-08 12:42
Ik kan alleen maar een voorbeeld geven in C#, maar het komt op het zelfde neer...
Wat je dus wilt, is een globale variabele van een ascx aanroepen in een aspx.

Dit is verassend makkelijk :)

ascx
code:
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
namespace BackSite.Controls
{
    using System;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Collections;
    using Bsu.Components;
    /// <summary>
    ///     Summary description for getPathFromObjectID.
    /// </summary>
    public abstract class getPathByObjectID : System.Web.UI.UserControl
    {
        
                                //HIER DECLAREER JE DUS DE VARIABELEN DIE JE WILT AANROEPEN
                                public int ObjectID;
        public string strPath;
        public string ImageUrl;
        protected System.Web.UI.WebControls.Image ObjectTypeIcon;
        protected System.Web.UI.WebControls.Label Label1;
        protected System.Web.UI.WebControls.Label Label2;
        protected System.Web.UI.WebControls.Label ObjectTypeName;
        
        private void Page_Load(object sender, System.EventArgs e)
        {
            Bsu.Components.Objects obj = new Bsu.Components.Objects();
            Bsu.Components.Objects.ObjectProperties objProperties = obj.getObjectProperties(ObjectID);
                        
            ImageUrl = objProperties.Icon.ToString();
            ObjectTypeName.Text = objProperties.ObjectTypeName.ToString();
            
            Hashtable ht = new Hashtable();
            Hashtable htPath = obj.getPath(ObjectID, ht);

            strPath = "<a href=\"manage_workspace.aspx?ObjectID=1\">/</a>";
            
            foreach (DictionaryEntry Entry in htPath) 
            {
                if (strPath != "<a href=\"manage_workspace.aspx?ObjectID=1\">/</a>")
                    strPath += "/";
                if ((int)Entry.Key != 1)
                    strPath += "<a href=\"manage_workspace.aspx?ObjectID=" + Entry.Key.ToString() + "\">" + Entry.Value.ToString() + "</a>";

            } 


        }

        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }
        
        ///     Required method for Designer support - do not modify
        ///     the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion
    }
}


deze usercontrol heeft een ObjectID nodig om te werken

in de ASPX bestand kan je in de page_load deze waard doorgeven:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class folder_manage1 : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.Label Label1;
        protected System.Web.UI.WebControls.DataGrid dgFolder;
        protected System.Web.UI.WebControls.Button btnRename;
        protected System.Web.UI.WebControls.Button btnCopy;
        protected System.Web.UI.WebControls.Button btnMove;
        protected System.Web.UI.WebControls.Button btnDelete;
        protected BackSite.Controls.getPathByObjectID getPathByObjectID; //HIER WORDT DE ASCX GELADEN (of iets anders..ken die termen niet :))

        public int ObjectID;

        private void Page_Load(object sender, System.EventArgs e)
        {
            if (Request.Params["ObjectID"] == null) 
                ObjectID =1;
            else
                ObjectID = Int32.Parse(Request.Params["ObjectID"]);
            
            if (!IsPostBack) 
                BindGrid();

            getPathByObjectID.ObjectID = ObjectID; //HIER VOORZIE IK DE OBJECTID VAN EEN WAARDE
        }