24. august 2003 - 10:50
Der er
7 kommentarer og 1 løsning
Hente en control fra ascx-fil fra aspx-fil
I code behind (C#) i aspx har jeg problemer med at hente indholdet i et felt, som ligger i en user control (ascx). Jeg gjorde sådan: ((RadioButtonList)FindControl("ikoner")).SelectedItem.Value, men der kommer en nullreference fejl. Skyldes sikkert, at controls som ligger i en ascx-fil skal kaldes på en anden måde i aspx-filen. How?
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
24. august 2003 - 12:20
#1
object ikon = this.FindControl("ikoner"); string valgtIkon if (ikon != null) { RadioButtonList rbl = (RadioButtonList)ikon; valgtIkon = (string)rbl.SelectedItem.Value; } else { Response.Write("ikon-kontrollen blev ikke fundet"); }
24. august 2003 - 14:56
#2
Hm, denne kontrol er null - jeg har skrevet det i code behind i aspx'en - og den skulle fange den control i ascx'en... ?
24. august 2003 - 15:06
#3
hvis du har tilføjet din control til this.Controls-collectionen på din side FØR du kalder FindControl, så burde du kunne finde den. Du er sikker på at der er en control der har "ikoner" som id ?
24. august 2003 - 15:10
#4
Denne control findes i ascx-siden som <asp:RadioButtonList id="ikoner" Runat="server" CssClass="lille" RepeatColumns="1"/> med 12 radioknapper, som man skal vælge.
24. august 2003 - 15:30
#5
... og hvordan indsætter du din ascx (Control)-kontrol på din aspx (Page)-side ?
24. august 2003 - 15:59
#6
Via <%@ Register TagPrefix="Deafhome" TagName="Moedestedet" Src="~/Moduler/MoedeStedet/MoedestedetCommon.ascx" %> <Deafhome:Moedestedet get="indlaegtype" runat="server"/> Alle kommer frem som det skal....
24. august 2003 - 21:14
#7
bum bum... det var mærkelig... prøv at sæt den her kode ind på din side, og lad os se hvad der sker :) <%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" %> <script runat="server"> private void PrintControls() { foreach (Control c in this.Controls) { Response.Write(c.ToString() +"<br />"); if (c.HasControls()) { OutputSubControls(c, 1); } } } private void OutputSubControls(Control control, int level) { foreach (Control c in control.Controls) { Response.Write (PrintPen(level) + c.ToString() +"<br />"); if (c.HasControls()) { OutputSubControls(c, level+1); } } } private string PrintPen(int count) { string tmp = ""; for (int i = 0; i < count; i++) { tmp += "---"; } return tmp; } private void Page_Load(object sender, EventArgs e) { PrintControls(); } </script>
30. september 2003 - 19:33
#8
Hmpf, jeg har ikke kunne løst dette problem, så det blev sådan, at samme kodelinier 2 steder :-(
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.