Avatar billede sholm Nybegynder
09. januar 2007 - 10:55 Der er 7 kommentarer og
1 løsning

Usercontrol null reference.

Hej

Jeg har lavet en webform hvorpå jeg har en form i denne form har tilføjet en usercontrol med nogle textbokse, dropdowns osv. Jeg vil så gerne køre en funktion på min usercontrol fra min webform. Men når jeg vil referere til usercontrolen fra webformen får jeg en null reference.

Webform:
Min aspx fil:
<%@ Register TagPrefix="sholm" TagName="Prisaend" Src="/controls/prisaendringer.ascx" %>

Min aspx.vb fil:
Protected WithEvents ctrlPrisaendring As prisaendringer

Public Sub OpretKladde(ByVal sender As Object, ByVal e As EventArgs)
    Dim objKladde As New Kladde
        objKladde = CType(ctrlPrisaendring.getValues(objKladde), Kladde)
End Sub

Null reference fejlen kommer ved ctrlPrisaendring.getValu...

Pt. sker der ingen ting i getValues funktionen, den returnerer blot objektet.

Nogle forslag?
Avatar billede sholm Nybegynder
09. januar 2007 - 12:00 #1
Jeg kan godt fange objektet med: Me.FindControl("kontrol") funktionen, men er det den rigtige måde at gøre det på? Jeg synes det virker forkert at jeg skal søge på min side efter en kontrol før jeg kan bruge den.
Avatar billede mikkel_sommer Nybegynder
09. januar 2007 - 13:35 #2
og det er et kladde objekt getValues-metoden returnerer?
Avatar billede mikkel_sommer Nybegynder
09. januar 2007 - 13:37 #3
FindControl metoden er meget almindeligt, man kan også, hvis man ved hvor præcist i ens controltree kontrollen ligger, referere direkte til den. Men det er klart det nemmeste at anvende Findcontrol()
Avatar billede sholm Nybegynder
09. januar 2007 - 16:05 #4
Ja det er et Kladde objekt der returneres.

Pt. benytter jeg FindControl, jeg kan bare ikke helt acceptere at det er den bedste måde at finde mine kontroller på, der må være en smartere måde :)
Avatar billede mikkel_sommer Nybegynder
10. januar 2007 - 09:47 #5
der er en anden måde, om den er smartere kan diskuteres for du er nødt til at vide hvor præcis i dit controltree den kontrol du leder efter ligger.

Lad os eksempelvis sige at du har en repeater med nogle dynamisk oprettet kontroller i så kan du gøre fgl.:

Dim textbox As System.Web.UI.WebControls.TextBox = Me.Repeater1.Controls.Item(1)

Men som sagt så er du nødt til at vide at præcis den textbox du vil have fat i ligger på plads 1.

Hvis du er i tvivl om hvor dine controls præcist ligger kan du, hvis du vil bruge dette, se det ved at sætte trace = true så kommer hele kontrol traet frem nederst på din side når du kører den.
Avatar billede sholm Nybegynder
21. marts 2007 - 09:56 #6
smid lige et svar hvis du vil have point :)
Avatar billede mikkel_sommer Nybegynder
21. marts 2007 - 10:03 #7
Svar :)
Avatar billede mikkel_sommer Nybegynder
21. marts 2007 - 10:04 #8
Hovsa ... her kommer lige et rigtigt svar :)
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