[Visual basic.NET] Textbox benaderen in een repeater

Pagina: 1
Acties:

  • Wally-S
  • Registratie: September 2001
  • Laatst online: 28-08 15:56

Wally-S

-Snowboarding is art-

Topicstarter
Ik werk met Visual studio.net

Met behulp van een repeater zet ik bijv. 5 tekstvakken op het scherm gevuld met waardes uit een database.
Nu wil ik nadat ik de inhoud van de tekstvakken heb veranderd, deze verandereingen updaten naar de database, klinkt logisch en makkelijk...dacht ik.
Nu is het probleem dat de tekstvakken individueel niet aan te roepen zijn, zodat je de inhoud van de tekstvak zo naar een cell in een database kan schrijven.
Het aanroepen van een tekstvak lukt niet omdat deze gegenereerd worden mbv gegevens uit een database, het aantal records in database wordt het aantal tekstvakken. De tekstvakken krijgen zo niet ieder een eigen naam.
Nu heb ik in de broncode gekeken van de uitgevoerde pagina, en daar hebben de tekstvakken natuurlijk wel ieder een eigen naam gekregen, maar deze naam kan ik niet in de broncode gebruiken omdat deze naam niet herkend wordt.

Dus in het kort: weet iemand een manier waardoor ik óf de door een repeater gegenereerde tekstvakken per stuk kan aanroepen, óf hoe ik alle door een repeater gegenereerde tekstvakken in een keer kan updaten.

Snow is only frozen water


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Heb je het hier over ASP.NET?

https://fgheysels.github.io/


  • Wally-S
  • Registratie: September 2001
  • Laatst online: 28-08 15:56

Wally-S

-Snowboarding is art-

Topicstarter
Ja, idd ASP.NET

Snow is only frozen water


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 09:50

mulder

ik spuug op het trottoir

Heeft die Repeater geen Item collectie of iets dergelijks?

Edit: Ja dus, RepeaterItem collectie Items. F1 knop werk.

oogjes open, snaveltjes dicht


  • Wally-S
  • Registratie: September 2001
  • Laatst online: 28-08 15:56

Wally-S

-Snowboarding is art-

Topicstarter
Don Facundo schreef op 13 augustus 2002 @ 09:38:
Heeft die Repeater geen Item collectie of iets dergelijks?
Ja inderdaad, nu gevonden.
Thanks, ik kan weer even verder.

Snow is only frozen water


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 09:50

mulder

ik spuug op het trottoir

Er staat een voorbeeldje in de MSDN help, die zit bij Visual Studio en is anders op msdn.microsoft.com te vinden.

oogjes open, snaveltjes dicht


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
En met de ItemCommand delegate kan je makkelijk afvangen op welk item het event gebeurt is zodat je niet alle items hoeft te controleren op veranderingen

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Wally-S
  • Registratie: September 2001
  • Laatst online: 28-08 15:56

Wally-S

-Snowboarding is art-

Topicstarter
Ik ben er nog even mee bezig geweest, maar het wil nog niet helemaal lukken.
Ik heb nu de volgende html code:
code:
1
2
3
4
5
6
7
8
9
10
<ItemTemplate>
    <tr>
        <td>
            <INPUT type="text"  value='bla'>
        </td>
        <td>
            <INPUT type="text" value='nog iets'>
        </td>
    </tr>
</ItemTemplate>


Bij de event van de button heb ik het volgend staan:

code:
1
2
3
4
5
6
Dim item As RepeaterItem
For Each item In Repeater1.Items
    Label1.Text &= 
              _CType(item.Controls(0), 
                DataBoundLiteralControl).Text& "<br>"
Next item


Dit werkt gewoon, in het label krijg ik dan gewoon de 2 tekstvakken te zien met 'bla' erin.
Maar het probleem is dat als ik andere tekst inzet deze tekst niet neergezet wordt, maar allen 'bla'.
Dit dacht ik te voorkomen met 'runat="server" ' bij de tekstvakdeclaratie te zetten. Alleen werkt het na deze toevoeging helemaal niet meer.
Is er een manier waarmee ik de gepostte data toch in een variabele kan krijgen?

[ Voor 0% gewijzigd door Wally-S op 13-08-2002 15:01 . Reden: Even minder layout verneukend gemaakt. ]

Snow is only frozen water


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 09:50

mulder

ik spuug op het trottoir

Je verwart hierboven de html met asp.net code (die runtime naar html word omgezet, maar daar moet je eigenlijk niet naar kijken)

oogjes open, snaveltjes dicht


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ja waarom gebruik je niet een <asp:textbox id="txtBlaat" OnTextChanged="Blaat" runat="server></asp:textbox> en maak je gewoon een eventhandler voor blaat. Dan vang je meteen alle veranderingen af

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Wally-S
  • Registratie: September 2001
  • Laatst online: 28-08 15:56

Wally-S

-Snowboarding is art-

Topicstarter
Don Facundo schreef op 13 augustus 2002 @ 15:19:
Je verwart hierboven de html met asp.net code (die runtime naar html word omgezet, maar daar moet je eigenlijk niet naar kijken)
Ik snap niet wat je hiermee precies bedoeld.
rwb schreef op 13 augustus 2002 @ 16:01:
Ja waarom gebruik je niet een <asp:textbox id="txtBlaat" OnTextChanged="Blaat" runat="server></asp:textbox> en maak je gewoon een eventhandler voor blaat. Dan vang je meteen alle veranderingen af
omdat het gedeelte 'runat="server" ' er op een of andere manier niet bij 'mag'.
Als ik dit nl. weglaat werkt het wel maar zet ik het erbij krijg ik een foutmelding:
code:
1
System.InvalidCastException: Specified cast is not valid.

ps. Let op: Deze textbox staat IN een repeater, buiten een repeater om is het voor mij geen probleem, maar juist bij een repeater geeft het problemen.

Snow is only frozen water


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
code:
1
_CType(item.Controls(0),DataBoundLiteralControl).Text


Hier cast je ook naar een DataBoundLiteralControl terwijl je een System.Web.UI.HtmlControls.HtmlInputText in je aspx file hebt gedefineerd

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Wally-S
  • Registratie: September 2001
  • Laatst online: 28-08 15:56

Wally-S

-Snowboarding is art-

Topicstarter
rwb schreef op 13 augustus 2002 @ 16:31:
code:
1
_CType(item.Controls(0),DataBoundLiteralControl).Text


Hier cast je ook naar een DataBoundLiteralControl terwijl je een System.Web.UI.HtmlControls.HtmlInputText in je aspx file hebt gedefineerd
Maar wat zou deze regel dan moeten worden:
code:
1
CType(item.Controls(0), DataBoundLiteralControl).Text


Wat ik ook inplaats van 'DataBoundLiteralControl' zet, ik krijg altijd een "Specified cast is not valid" foutmelding.

Ook als ik 'DataBoundLiteralControl' vervang door 'System.Web.UI.HtmlControls.HtmlInputText'.

Snow is only frozen water


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
mischien is item.Controls(0) wel helemaal niet je textbox. Je zou dit kunnen controleren door item.Controls(0).GetType() te doen. Je kan je control ook op naam opvragen door item.FindControl( "Naam" ) dan heb je ook geen problemen op het moment dat je meer Controls toevoegt aan je repeater item

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 09:50

mulder

ik spuug op het trottoir

dat omdat je appels naar peren probeert te casten. je gebruikt een <input> (HTML) en die kun je niet gebruiken, je moet een <asp:textbox> (ASP.NET) gebruiken.

oogjes open, snaveltjes dicht


  • Wally-S
  • Registratie: September 2001
  • Laatst online: 28-08 15:56

Wally-S

-Snowboarding is art-

Topicstarter
Don Facundo schreef op 14 augustus 2002 @ 11:03:
dat omdat je appels naar peren probeert te casten. je gebruikt een <input> (HTML) en die kun je niet gebruiken, je moet een <asp:textbox> (ASP.NET) gebruiken.
Dat heb ik ondertussen al vervangen.

Ik ben nu bezig om het met findcontrol te proberen.

Snow is only frozen water


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Don Facundo schreef op 14 augustus 2002 @ 11:03:
dat omdat je appels naar peren probeert te casten. je gebruikt een <input> (HTML) en die kun je niet gebruiken, je moet een <asp:textbox> (ASP.NET) gebruiken.
Tuurlijk kun je wel een HTML element gebruiken. Waar denk je dat de System.web.ui.HTMLControls namespace voor is. Ze hebben alleen minder functionaliteit als de WebControls dus het is makkelijker om die gewoon te gebruiken.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Wally-S
  • Registratie: September 2001
  • Laatst online: 28-08 15:56

Wally-S

-Snowboarding is art-

Topicstarter
Pfff, eindelijk gelukt.
Het is geworden:
code:
1
CType(item.FindControl("test"), WebControls.TextBox).Text & "<br>"

Die Findcontrol is inderdaad heel handig.
rwb en Don Facundo bedankt voor jullie hulp.

Snow is only frozen water


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Kan je in Visual basic niet doen (WebControls.TextBox)item.FindControl( "test" ) om te casten? dat vindt ik persoonlijk een stuk mooier dan om er een Cast functie voor te gebruiken

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Wellicht nuttig de quickstart tutorials op http://www.gotdotnet.com door te nemen? Daarin worden dit soort dingen allemaal uitgelegd. Wellicht kun je veel overslaan, maar sommige kunnen denk ik wel nuttig zijn in jouw geval. (de info die je vroeg is daar bv te vinden) :)
Pagina: 1