15. november 2005 - 11:08
Der er
8 kommentarer og 1 løsning
Loope igennem sidens html elementer
Hej, På page_load modtager min side et jagged array (string[][]) indeholdende et navn og en værdi. Navnet er navnet på et html form element, og værdien er værdien som gerne skal vises i html form elementet. Hvordan kan jeg loop'e igennem mit array og indsætte de rigtige værdier i de rigtige felter på min side? Et lidt kringlet spørgsmål, men jeg håber det giver mening.. /pfp
Annonceindlæg fra Deloitte
15. november 2005 - 11:09
#1
indeholdende et navn og en værdi = indeholdende en række navne og værdier.
15. november 2005 - 11:31
#2
de controls skal have tilføjet runat="server" og et passende ID.. Find dem så med FindControl()..
15. november 2005 - 11:56
#3
Det lader til at være rette vej. Men når jeg så har fat i controllen, med: FindControl("telefon") hvordan assigner jeg så en værdi til den?
15. november 2005 - 12:05
#4
TextBox foo = (TextBox)FindControl("telefon"); foo.Text = mitDataArray[666]; Det virker, men mit problem er at jeg ikke på forhånd ved at det er en TextBox der skal udfyldes..
15. november 2005 - 12:05
#5
Mit array kan også indeholde navne og værdier på alle andre former for HTML form elementer..
15. november 2005 - 12:52
#6
du kan bare sige Control c = FindControl("telefon"); if(c is TextBox) { (TextBox)c.Text = //; } if(c is CheckBoxList) { } Eller lav en case, du forstår sikker nok hvor jeg vil hen..
15. november 2005 - 13:37
#7
Bruger den her til at finde controls der starter med noget specielt: private void FindMailSubFields(Control startControl, ArrayList list, DataTable dbSpecialFields) { foreach ( Control c in startControl.Controls ) { if ( c.ID != null && c.ID.IndexOf("SpecialField") != -1) { foreach(DataRow dr in dbSpecialFields.Rows) if(c.ID == "SpecialField_" + dr[1].ToString()) { if(c is TextBox) { TextBox tb = (TextBox)c; if(tb.Text != "") { list.Add(new MailSubField(tb.ID, tb.Text, tb.ID.Remove(0,13))); } } if(c is ValidationBoxTemplate) { ValidationBoxTemplate tb = (ValidationBoxTemplate)c; if(tb.Text != "") { list.Add(new MailSubField(tb.ID, tb.Text, tb.ID.Remove(0,13))); } } else if(c is CheckBoxList) { CheckBoxList cb = (CheckBoxList)c; string s = ""; foreach (ListItem item in cb.Items) { if (item.Selected) { s += item.Value +". "; } } list.Add(new MailSubField(cb.ID, s, cb.ID.Remove(0,13))); } } } // Continue search if ( c.HasControls() ) FindMailSubFields(c,list, dbSpecialFields); } }
15. november 2005 - 13:43
#8
Super det er løsningen :) Jeg var nået frem til: Control c = FindControl(variabel_her); string type = c.GetType().Name.ToLower() if(type == "textbox") osv osv. Men dit "is" tjek er langt mere elegant. Smid et svar.
15. november 2005 - 14:37
#9
:)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.