Get content controls in Master page

Kot že sam naslov pomeni, me zanima, ali master vidi Control-e od Content-a. Bolj kot iščem bolj se mi zdi da to ne gre, čeprov mi to res ni všeč. Ker bi rad že v master-ju spremenu en property vsem CheckBox control-am. In res nebi rad na vsakem Page-u pisal metode zato, ampak bi jo rad napisal samo v Master-ju.

Vem da obratna smer gre. Rečeš Master.Controls in imaš Collection Master-jevih Control. 

Avtor: fora, objavljeno na portalu SloDug.si (Arhiv)

Leave a comment

Please note that we won't show your email to others, or use it for sending unwanted emails. We will only use it to render your Gravatar image and to validate you as a real person.

bojanv
bojanv - torek, 10. april 2007

Če te nisem narobe zastopil....Odvisno je samo, kako se tega lotiš. Master page se obnaša "podobno" kot UserControl, tko da je dobro, če razumeš, kako user control deluje. In še neki, kar je dosti pomembno, Page_Load dogodek od strani se naloži prej, kot od masterja.Maš kr neki načinov, najbolj priljubljena sta mi dva....lahko z FindControl ali pa ControlCollection (primer spodaj)... vsak content page se zlinka v runtime-u z cotentplaceholderjem...torej, če je odvisen content od masterja, master nadzira vse te kontrole. Problem tukaj je, specificirat tako zahtevo, kot jo imaš ti. Maš spet več možnosti. Ali to narediti na gumb (da bo kliknil) ali v page load ali kakem drugem dogodku.primer:private void ChangeChecked(){ControlCollection ctrl = ContentPlaceHolder1.Controls; //lahko bi tudi uporabil FindControl in ga cast-al v ContentPlaceHolderforeach (Control control in ctrl){if (control is CheckBox)(control as CheckBox).Checked = true;}}drugi način je z dogodki (ampak se ze malo oddaljuje od tvoje zahteve, samo ga je vredno omenit). Lahko specificiraš delegate-a na strani masterja in ga povežeš v nek dogodek na strani, recimo v kaki event, ki se zgodi, ka te vem, v page_load ali pa v kaki onclick na strani masterja. Potem to zlinkas tako, da preneseš parametre na masterja preko bindanja delegate-a. Recimo, v contentu Master.CheckedChanged += new CheckedChangedHandler(neki_event); in v tem eventu poštimaš zadeve. Seveda je potrebna referenca na master, kar pa lahko pomeni slabost (<@ master ... %> direktiva)Primer:public delegate void CheckedChangedHandler(); //na masterjupublic event CheckedChangedHandler CheckedChanged;Master.CheckedChanged += new MasterPage.CheckedChangedHandler(Master_CheckedChanged); //na contentuSe opravičujem za grdo napisan post, ampak nekako se kopiranje iz VSja ne zastopi s temle editorjem... Se opravičujem za grdo napisan post, ampak nekako se kopiranje iz VSja ne zastopi s temle editorjem... Še par linkov (če ti bo kaj koristilo):Working with ASP.NET Master Pages Programmatically Master pages trick & tipsTrigger Page Methods from a User Control