Avatar billede clausjul Nybegynder
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?
Avatar billede burningice Nybegynder
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");
}
Avatar billede clausjul Nybegynder
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... ?
Avatar billede burningice Nybegynder
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 ?
Avatar billede clausjul Nybegynder
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.
Avatar billede burningice Nybegynder
24. august 2003 - 15:30 #5
... og hvordan indsætter du din ascx (Control)-kontrol på din aspx (Page)-side ?
Avatar billede clausjul Nybegynder
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....
Avatar billede burningice Nybegynder
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>
Avatar billede clausjul Nybegynder
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 :-(
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