Archief - ASP.NET/C# : FindControl() combineren met dynamische controls

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Sharur

Legacy Member
kheb dus atm een probleempje bij het vinden van een dynamisch gecreëerde control met FindControl()

dit is mn code en resultaat (uitleg volgt):
http://members.lycos.co.uk/elcura/misc/code.txt

In de modules VoegCheckBoxToe(), VoegTextBoxToe() en VoegDropDownListToe() maak ik dus dynamisch een checkbox, textbox of dropdownlist en voeg ik toe aan een PlaceHolder (holder genaamd) en steek ik de overeenkomende ID's in een string array
deze controls worden dan ingevuld en nadat de gebruiker op een button "Toevoegen" klikt voert hij de module "Toevoegen()" uit
in toevoegen zoek ik dan naar de controls die aangemaakt zijn via FindControl(<idvandiecontrols>) en moet hij normaal de ingevulde waarde in de xml pagina schrijven, indien het resultaat van FindControl null is schrijft hij "<id> not found." in de xml pagina

normaal gezien moet hij altijd die control vinden maar dat doet hij dus niet

isser iemand die mij hierbij kan helpen?
ik heb op internet gezocht maar alle voorbeelden die ik vind zijn praktisch exact hetzelfde als wat ik heb, enkel werkt het bij mij niet :/

dank bij voorbaat :P

Akira

Legacy Member
als ge er de waarde wilt uithalen zult ge sowieso moeten casten. Volgens mij moet ge zelfs de functie findControls niet gebruiker. probeer eens het volgende (is wel vb)

Dim ddlInput As DropDownList = DirectCast(holder.Controls(0), DropDownList)

Waarbij ge 0 dan kunt vervangen door het cijfer van uwen control (dit is afhankelijk van de volgorde dat ze geplaats zijn, dus als ge eerst uwen checkbox geplaats heb zal die 0 zijn, uwen textbox 1 en uw dropdownlist 2)

servi

Legacy Member
moderator noot :
je topic bevat geen prefix, een verkeerd prefix of heeft een onduidelijke titel.
Gelieve een duidelijke titel met een bijhorend correct prefix te gebruiken.
Voor meer informatie over prefixen kan je terecht op regels en prefixen !!!.
Je topic is aangepast.

edit : vermits ik zie dat je de titel in je bericht al had gecorrigeerd in je bericht (maar niet in de threadtitel), zal ik daarom geen waarschuwing geven, omdat je blijkbaar al weet van de regels :)

Sharur

Legacy Member
Akira zei:
als ge er de waarde wilt uithalen zult ge sowieso moeten casten. Volgens mij moet ge zelfs de functie findControls niet gebruiker. probeer eens het volgende (is wel vb)

Dim ddlInput As DropDownList = DirectCast(holder.Controls(0), DropDownList)

Waarbij ge 0 dan kunt vervangen door het cijfer van uwen control (dit is afhankelijk van de volgorde dat ze geplaats zijn, dus als ge eerst uwen checkbox geplaats heb zal die 0 zijn, uwen textbox 1 en uw dropdownlist 2)

kheb gecast eh :
DropDownList ddl = (DropDownList) holder.FindControl(listid.ToString());
das de casting manier uit C#

maar alsek met holder.Controls werk via:
foreach (Control control in holder.Controls)
{
x++;
}

blijft mn teller (x) op 0 staan (alsek die dus bovenaan ook definieer of zelf gewoon locaal in Toevoegen vanboven)
dus blijkbaar denkt ASP dat er geen controls in mn holder zitten :wtf:

met holder.Controls(0) (zogezegd de eerste control in mn holder dus) geeft het ook null terug als resultaat

@servi: kben et gewoon van andere subfora hier om [blabla] als prefix te moeten gebruiken, kdacht dat er uniformiteit ging zijn en hier dus hetzelfde zijn
khebbet nadien pas opgemerkt dat et dus niet zo was en proberen te editen maarja titel zelf editen kan je als gebruiker niet :/
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan