Jag vill kunna utöka funktionaliteten "FindControl" på under System.Web.UI.Control. Hej Daniel, Hej AndersUtöka/Overloada FindControl
Jag har hittat en kodsnipp på nätet som gör detta åt mig.
Problemet är att jag bara vill utöka funktionaliten när jag skickar med
en flagga.
Koden som ska utöka den befintliga funktionaliten ser ut så här
System.Web.UI.Control FindControl(System.Web.UI.Control start, string id)
{
System.Web.UI.Control foundControl;
if (start != null)
{
foundControl = start.FindControl(id);
if (foundControl != null)
return foundControl;
foreach (Control c in start.Controls)
{
foundControl = FindControl(c, id);
if (foundControl != null)
return foundControl;
}
}
return null;
}
och kommer härifrån.
http://forums.asp.net/p/1192932/2057682.aspx
Denna kodsnipp gör att jag kan hitta mina kontroller var de än ligger
i sidan och är följaktligen mycket nöjd med att hittat den.
Problemet är bara att jag vill nyttja denna funktionalitet enbart på de
ställen jag själv vill. Jag får felmeddelanden i ett senare skede som härstammar
från denna omdefiniering av "FindControl"
Det jag vill göra är att skriva en "Overload".
Hur gör jag detta? Jag har ingen aning? Jag antar att jag bör
skriva en speciell FindControl-klass.
Mycket tacksam för svar!
Med vänliga hälsningar
Daniel Sv: Utöka/Overloada FindControl
Jag har en sådan metod själv. Denna har jag placerat i en hjälpklass (tillsammans med andra relaterade bra-att-ha metoder):
public static class WebControlHelper
{
public static Control FindControl(Control start, string id)
{
...
}
}
Detta går naturligtvis att kombinera med överskuggning om man vill:
public partial class MyPage : System.Web.UI.Page
{
public override Control FindControl(string id)
{
return WebControlHelper.FindControl(this, id);
}
}
Sv:Utöka/Overloada FindControl
Tack för ditt svar!
Tyvärr verkar jag ha skrivit ihop det hela fel och hamnar i en oändlig loop.
Har du möjlighet att posta lite mer kod? Som jag läser den befintliga kodsnutten
anropar du den alternativa "FindControl" villkorslöst. Stämmer mitt antagande?
Mina kontroller ligger i en UC. Jag vet inte om det har någon betydelse här.
[Edit] --> Jag hittade en workaround för mitt specifika problem och markerar tråden som löst.
// Daniel