Er ikke helt inde i hvilke objekter der ligger i page objektet, men det består i hvert fald af et htmlform objekt, som er det dine kontroller ligger i. Så dit check kan laves således List<string> lst = new List<string>(); foreach (Control ctl in Page.Controls) { if(ctl is HtmlForm) { HtmlForm ctlForm= (HtmlForm)ctl; foreach (Control ctl2 in ctlForm.Controls) { if (ctl2 is CheckBox) { CheckBox box = (CheckBox)ctl2; if (box.Checked) { lst.Add(box.ID); } } } } }
Hvis du vil søge på input checkboxen som en asp.net Checkbox kontrol skal du sætte runat="server" ind på alle checkboksene.
Dernæst kan det blive lidt svært og finde dem når du kun søger et niveau ind, asp.net er jo object orienteret, så alle objekter består af objekter, og der er ingen der siger at checkboksene ligger i yderste niveau.
Nej, mon ikke den kan finde den når du opretter dem sådan, men situation 2 er stadig aktuel, vi skal igennem alle niveauerne af objekter og lede efter checkbokse.
Har lige smidt en rekursiv funktion sammen, som undersøger om der er checkbokse i alle kontroller under udgangs kontrollen.
Nu har jeg lavet denne: List<string> lst = new List<string>(); foreach (Control c in Page.Controls) { foreach (Control childc in c.Controls) { lst.Add(childc.ToString()); foreach (Control childc2 in childc.Controls) { lst.Add(childc2.ToString()); foreach (Control childc3 in childc2.Controls) { lst.Add(childc3.ToString()); foreach (Control childc4 in childc3.Controls) { lst.Add(childc4.ToString()); } } } } }
Og jeg rammer ikke en eneste checkbox.
Jeg har nu også indsat din metode - igen finder den ikke noget...
Ja det er jo noget hø. Har lige prøvet og bruge din kode til og generere en test tabel, og finder fint alle afkrydsede checkbokse med min funktion, men det løser jo ikke dit problem.
foreach (Control ctl in enControl.Controls) { lst.Add(ctl.ToString());
if (ctl.Controls.Count >0) FindCheckbox(ctl, lst); }
Denne funktion finder ALT undtaget mine checkboxes - så må simpelthen være fordi at runat=server mangler. Gad vide hvordan jeg får sat den attribut når jeg genererer mine controls...
Meget underligt, har som sagt ikke problemer med og finde dem i min test. Du kan da godt se den protected void Page_Load(object sender, EventArgs e) { Table GenTable = new Table(); for (int i = 1; i <= 10; i++) { TableRow fillRow = new TableRow(); TableCell cellRoleTxt = new TableCell(); TableCell cellRoleCheck = new TableCell(); cellRoleTxt.Text = "Titel"; CheckBox box = new CheckBox(); box.ID = i.ToString(); cellRoleCheck.Controls.Add(box); fillRow.Controls.Add(cellRoleTxt); fillRow.Controls.Add(cellRoleCheck); GenTable.Controls.Add(fillRow); } form1.Controls.Add(GenTable); } protected void Button1_Click(object sender, EventArgs e) { List<string> lst = new List<string>(); FindCheckbox(Page, lst); }
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.