Pokud do control-tree přidáváme dynamicky nějaké controly, které mají obsluhu postbacku (data nebo event), pak pokud těmto controlům explicitně nanastavíme nějaké ID, může se nám snadno stát, že postback nebude korektně vyhodnocen, např.:
- Button, LinkButton, ImageButton nebudou emitovat události Click, Command, …,
- inputové controly (TextBox, DropDownList, …) zapomenou přes roundtrip data,
- …
…v zábavnějším případě se nám může stát, že postback není korektní jen u některých dynamický controlů a u některých se vyhodnotí správně (třeba pokud přidáváme řádky objednávky, tak nám data zapomíná jen poslední řádek).
Nevím, jestli je to bug, ale dělalo to už v .NET 1.1 a dělá to i v .NET 2.0.
Každopádně nastavením ID u dynamicky přidávaných controlů se těchto potíží zbavíme!
private void CreateControlsHiearchy() { LinkButton lb = new LinkButton(); lb.ID = "MyLB"; // <--- bez toho není jisté, že se nám bude Click korektně volat !!! lb.Click += ... ... Controls.Add(lb); }