24. marts 2006 - 15:04Der er
14 kommentarer og 2 løsninger
null reference - select list i usercontrol og javascript
Jeg sidder med en web usercontrol 'register.ascx' som jeg loader dynamisk ind i 'registerTime.aspx' usercontrol'en indeholder en select liste 'editableList' i en form 'frmName'. Listen har et par clientside functions som den får fra et script 'describtions.js'
Mit problem er at jeg ikke kan fange control'en
Jeg er novice i javascript og håber der er lidt hjælp at hente.
jeg har forsøgt følgende
function fnDescribtionChanged() { var result; result = document.frmName.editableList.options.selectedIndex; alert(result); }
men kigger jeg på document.forms[].length, får jeg værdien '1', nemlig formen fra 'registerTime.aspx', men jeg har ingen idé om hvordan jeg fat i den loadede form 'frmName' og derfra listen i min usercontrol!
Findes der en løsning.. eller rettere hvordan løser jeg min problemet?
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
well.. i praksis vil du godt kunne regne med det, men de kunne jo ændre den måde id's genereres på som de har lyst til. desuden kan det ændres hvis du begynder at flytte rundt på kontrollerne.
hvis du skal bruge det i klientkoden bør du hente det... det er tilgængeligt på someControl.CliendID - så du kan få fat i det hvor du vil.
f.eks. kan du sætte sådan en her ind i dit script: <%= someControl.ClientID; %>
ja, ved getElementByIdFragment(), som funktionens navn antyder, er du ikke sikret at din control er unique. Nummereres de i den orden de renderes på siden, er man jo heller ikke sikker på at den altid hedder det samme.
--> superdude: smid et svar, jeg har fået fat i elementet, resten må jeg se om ikke jeg selv kan løse ;-)
Snepnet -> Ja, men er ClientID ikke kun en get - man kan ikke sette den, vel?
I så fald kan man jo have et javascript liggende i en seperat .js fil der er afhængigt af et bestemt id... Med mindre du via IO åbner jes filen og retter, men det er vist lidt overkill ;-)
someControl kan ikke være forskellig... det er det id du selv tildeler den. hvis du har en kontrol hvor du har givet den et id sådan her (bare for eksemplets skyld):
<asp:TextBox id="txtInd" runat="server" />
så vil du - selvom id'et renderes anderledes til browseren - få fat i den fra koden sådan her:
TextBox tb = FindControl("txtInd") as TextBox;
nej - det kan være lidt vanskelidt at hardcode den slags i scriptfiler, men du kan jo så udforme dine scripts, så id'et overføres som parameter ol.
--> snepnet: control'en er en <Select> jeg har oprettet i html koden. Findes der en tilsvarende funktion til at finde et elementet i javascript? Det hele sker nemlig clientside.
ja, jeg forventede egentlig ikke at ens id'er skiftede navn, på grund af renderingen... men sådan er det åbenbart, når man loader en control dynamisk. Det var nu også mere af nysgerrighed. Men nu er jeg opmærksom på det.
Synes godt om
Ny brugerNybegynder
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.