Hej, Hej, Ok, jag frågar på :)INamingContainer i custom controls
Kan någon på ett lättförståeligt sätt upplysa mig om vad det finns för nackdelar med att INTE ta medImplements INamingContainer
i klassdefinitionen när man skapar custom controls?
/max
Sv: INamingContainer i custom controls
Problemet att inte ta med den är att din kontroll då inte får rätt controlhierarki som id, det gör att ASP .Net motorn inte kan identifiera din kontroll.
Har du nästlade kontroller typ
Control A i den har du Control B som sedan har en Control C
Så blir hierarkin A:C:B:C <--- unika ID som ASP .Net motorn tar fram. När du trycker på en knapp inne i C (som oxå har detta id + knappens id) så kommer bla viewstaten och ASP .Net motorn att leta upp denna kontroll för att hitta dess state och ev anropsfunktion. Button_Click.
Om du inte har med detta Interface och lägger till kontrollen blir det unika id ditt vanliga ID och på så sätt kommer inter ASP .Net motorn att hitta din kontroll.
PS. Så länge din kontroll inte ligger högst i hierarkin. Vilket inte alltid är så vanligt. Kanske du lägger din kontroll i en placeholder, eller i en meny control, eller i en grid etc... Ds.
Hoppas detta svar var till hjälp, om inte fråga på.
Mvh JohanSv:INamingContainer i custom controls
Menar du alltså att jag får problem med att behålla ifyllda värden (t.ex. det som är skrivet i en textbox) vid postbacks, därför att .Net inte hittar rätt ställe att lägga tillbaka värdet på när jag inte tar med INamingContainer i kontrollerna?
Det verkat iofs stämma MEN,
om jag tar med följande kodsnutt i Page_Load-eventet för den sida som laddar kontrollerna:
Dim ctl As Control
Dim ctl2 As Control
For Each ctl In PlaceHolder1.Controls
For Each ctl2 In ctl.Controls
Next
Next
så återställs ifyllda värden efter postback, trots att jag inte har med INamingContainer i kontrollerna.
Skumt, eller??
PS. Jag laddar kontrollerna i Page_Init
//max