Avatar billede funtex Nybegynder
24. maj 2003 - 00:49 Der er 12 kommentarer og
1 løsning

liste over controls på side?

Hej...
Endnu et nybegynder spørgsmål:
Jeg skal bruge en funktion til at få en liste over alle de controls der på en page i VB .ASP.
Jeg går ud fra at der er en indbygget funktion til at få alle controls som et array eller noget, men jeg synes ikke jeg har kunnet finde den?
Avatar billede burningice Nybegynder
24. maj 2003 - 10:15 #1
foreach (Control c in this.Controls) {
  Response.Write(c.ToString());

  if (c.HasControls()) {
      OutputSubControls(c);
  }
}


private void OutputSubControls(Control control) {
  foreach (Control c in control.Controls) {
      Response.Write (c.ToString());
 
      if (c.HasControls()) {
        OutputSubControls(c);
      }
  }
}
Avatar billede funtex Nybegynder
25. maj 2003 - 18:47 #2
Jeg har oversat dit forslag til VB .NET men det virker ikke efter hensigten de controls jeg er interasseret i er controls som knapper , textboxe osv. og det er ikke den slags controls jeg får i stedet kommer der typen på pagen, og en litteral control
Avatar billede burningice Nybegynder
25. maj 2003 - 18:49 #3
uhm.. din eknapper, textboxe m.m., er de sat til runat="server" ?
Avatar billede funtex Nybegynder
25. maj 2003 - 19:31 #4
ja det er de..
Avatar billede burningice Nybegynder
25. maj 2003 - 19:48 #5
har du sat de første 7 linjer kode i din page_load?
Avatar billede funtex Nybegynder
25. maj 2003 - 19:57 #6
hmm... hvad skal der stå i de først 7 linjer?
Avatar billede funtex Nybegynder
25. maj 2003 - 20:02 #7
hvis du mener dit forslag så nej... det er anbragt i en funktion fpr sig der kaldes af et knap event
Avatar billede burningice Nybegynder
29. maj 2003 - 11:41 #8
hmm... weird... det virker ellers helt efter hensigten her :/
Avatar billede burningice Nybegynder
29. maj 2003 - 11:51 #9
http://www.burningice.dk/eksperten.dk/356437/

<%@ 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>

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form runat="server">
<asp:label ID="label1" Text="hej med dig" runat="server" /><br />

<asp:button ID="button1" Text="hej hej" runat="server" />
</form>
</body>
</html>
Avatar billede funtex Nybegynder
30. maj 2003 - 01:24 #10
ok nu fik jeg det til at virke!
det var noget galt med måden jeg havde skrevet SubControls på...
Opret et svar og du skal få dine points
desværre virker det ikke som jeg havde håbet på...
jeg havde tænkt mig at løbe alle controls igennem, og apply en style til hvert objekt afhængig af hvilken type objektet har. Desværre er Atributes ikke en del af basisklassen, control :-( (det skulle jeg jo selvfølgelig ha' checket først)
har du et forslag til hvordan det ka' gøres?

//Funtex
Avatar billede burningice Nybegynder
30. maj 2003 - 10:21 #11
funtex>> det du kan gøre er, at oprette en masse case's... lidt ala

string control = c.ToString();

switch (control) {
  case "System.Web.UI.WebControls.Button":
      Button b = (Button)c;
      c.CssClass = "whatever";
  case "System.Web.UI.WebControls.Label":
      Label l = (Label)c;
      l.CssClass = "whatever";
}
Avatar billede funtex Nybegynder
30. maj 2003 - 10:54 #12
ja det var en mulighed!
takker
Avatar billede burningice Nybegynder
30. maj 2003 - 11:01 #13
jeg har prøvet at caste controller dynamisk ved hjælp af reflection, men har aldrig fået det til at virke helt efter hensigten, så cases er den eneste mulighed sådan som jeg ser det.
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