Jag lägger användarkontroller på min sida med denna metod: tror det kan vara så att när du kör en postback så ligger kontrollerna kvar.Skapar du dom i Page_Load så kommer dom ju skapas en gång till och då med samma id. Problemet är att alla kontrollerna får samma ID tilldelade av asp.net. Han lägger krokben på sig själv alltså. har du provat att referera till linkbutton med tex myControl:thelinkbutton ? Det är enkelt att se vilket ID de får, men inte hur man kan påverka detta. Problemet är löst.Dynamiska kontroller buggar
while(!done)
{
MyControl myControl = (MyControl) LoadControl("mycontrol.ascx");
phContainer.Controls.Add(myControl);
}
Kontrollerna läggs ut på sidan och allt är frid och fröjd, tills jag klickar på en LinkButton i någon an användarkontrollerna.
Då säger asp.net att jag har flera kontroller med samma namn. Även om jag sätter unika id på alla kontroller i användarkontrollen SAMT id på myControl så påverkas detta inte.
Hur sätter asp.net sina id:n? Hur kan jag motverka att detta sker?
Otroligt tacksam för svar!Sv: Dynamiska kontroller buggar
prova med
if(!postback)
{
//läg din kod här
}
Sv:Dynamiska kontroller buggar
Sv: Dynamiska kontroller buggar
Kör en trace så ser du exakt vad alla heter. Det kanske kan ge dig en fingervisning i asp.nets sätt att dynamiska namn och idSv:Dynamiska kontroller buggar
Sv: Dynamiska kontroller buggar
Det viktiga är att man MÅSTE tilldela ett unikt ID, och det EFTER att man lagt till kontrollen.
Lösningar av typen:
while(!done)
{
MyContol myControl = (MyControl) LoadControl("mycontrol.ascx");
placeholderContainer.Controls.Add(myControl);
myControl.ID += placeholderContainer.Controls.Count;
}
fungerar medan
while(!done)
{
MyContol myControl = (MyControl) LoadControl("mycontrol.ascx");
myControl.ID += placeholderContainer.Controls.Count;
placeholderContainer.Controls.Add(myControl);
}
inte fungerar.