Avatar billede wired Nybegynder
28. august 2003 - 20:37 Der er 10 kommentarer

Værdier fra en oprettet server-kontroller

Jeg har udført følgende:

Dim Item2 As New TextBox
Item2.ID = "TextBox1"
EmneInput.Controls.Add(Item2)
r2.Cells.Add(EmneInput)
Table1.Rows.Add(r2)

Men hvordan modtager jeg informationerne fra Textbox'en når klienten trykkes på en button?
Avatar billede wired Nybegynder
28. august 2003 - 21:00 #1
Det var åbenbart for svær.
Avatar billede burningice Nybegynder
28. august 2003 - 21:48 #2
TextBox tb = (TextBox)EmneInput.FindControl("TextBox1");
Avatar billede wired Nybegynder
28. august 2003 - 21:54 #3
Ovenstående udføres i Page_Load

Og når jeg klikker på button skulle jeg så modtage indholdet af textbox'en, men klik på button (og dermed over til Private Button1_Click) forsvinder alle de celler som jeg har oprettet.

Desuden siger vs.net at typen TextBox tb, TextBox og EmneInput er en type og ikke kan bruges som et udtryk. Jeg formoder at det skyldes at både Load_page og Button1_Click er Private, men er ikke speciel skrap til object-programmering.
Avatar billede wired Nybegynder
29. august 2003 - 15:54 #4
Ok - Jeg kan få det til at fungere med

    Dim box1 As New TextBox
    box1 = Page.FindControl("TextBox1")
    Button1.Text = box1.Text

Oprette alle controls igen, men så ryger fidusen lidt.
Det skulle være en almindelig formular som gemte resultatet når man trykkede på button og ikke viste resultatet igen.
Avatar billede wired Nybegynder
29. august 2003 - 15:58 #5
Ved at oprette alle controls igen.
Avatar billede thor.ostergaard Nybegynder
29. august 2003 - 19:24 #6
Kan du ikke sende mig din kode eller vise lidt mere her - så skal jeg nok kigge på det. thor@kursusmaterialer.dk
Avatar billede wired Nybegynder
29. august 2003 - 20:53 #7
OK....

Prøver at gøre det lidt overskueligt:

ASPX-fil
--------
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="index.aspx.vb" Inherits="projectnavn.WebForm2"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
    <HEAD>
    </HEAD>
    <body bgColor="#c0d0e1" MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server">
            <table height="100%" width="100%" align="center" border="0">
                <tr>
                    <td>&nbsp;</td>
                    <td vAlign="top" align="center"><asp:table id="Table1" runat="server" BorderWidth="0"></asp:table></td>
                    <td>&nbsp;</td>
                </tr>
                <TR>
                    <TD></TD>
                    <TD vAlign="top" align="center"><asp:button id="Button1" runat="server" Text="Gem informationerne"></asp:button></TD>
                    <TD></TD>
                </TR>
                <tr>
            </table>
        </form>
    </body>
</HTML>



aspx.vb-fil
-----------
Private Sub Page_Load(ByVal sender......) Handles MyBase.Load
  If Not IsPostBack Then

    Dim IDCounter As Integer = 1
    Dim CON As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & MapPath("data.mdb") & ";")
    CON.Open()
    Dim CMD As New OleDb.OleDbCommand("SELECT * FROM emner", CON)
    Dim DATA As OleDb.OleDbDataReader = CMD.ExecuteReader()
    DATA.Read()
    Do
      Dim r2 As New TableRow            ' 1. Row start

      Dim EmneInput As New TableCell    ' 1. cell = Text Input
      EmneInput.ColumnSpan = 3

      Dim Item2 As New TextBox              ' asp:TextBox
      Item2.ID = "TextBox" & IDCounter.ToString
      EmneInput.Controls.Add(Item2)
      r2.Cells.Add(EmneInput)
      Table1.Rows.Add(r2)

      IDCounter = IDCounter + 1

    Loop While DATA.Read = True
End Sub

Private Sub Button1_Click(ByVal... ) Handles Button1.Click
    Dim box1 As New TextBox
    box1 = Page.FindControl("TextBox1")
    Button1.Text = box1.Text


  ' HER vil jeg gerne gemme alle input fra alle textboxene fra page_load
  ' Men informationerne bliver ikke sendt til server med mindre jeg fjerner "  If Not IsPostBack Then"

    FormsAuthentication.SignOut()
  End Sub
Avatar billede wired Nybegynder
29. august 2003 - 23:52 #8
Ok - jeg tror jeg fandt løsningen:

    For I = 1 To Request.Form.Count - 1
      Response.Write(Request.Form.Item(I).ToString)
    Next

Men total set er der nok en nemmere løsning med noget dataset etc. det må jeg se lidt nærmere på.
Avatar billede wired Nybegynder
28. juli 2004 - 09:22 #9
Men du om også med et god fidus cyberf.. så send et svar og vi deler.
Avatar billede burningice Nybegynder
16. august 2004 - 11:49 #10
underligt at du ikke bare kan bruge FindControl... :(
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