Uno dei vantaggi di ASP.NET è la possibilità, grazie all'ereditarietà, di costruire web controls molto flessibili sfruttando le funzionalità già implementate da uno in particolare.
Può essere l'esempio, banalmente, di un control generico a cui vogliamo aggiungere la possibilità, attraverso del semplice codice Javascript, di mostrare o nascondere il contenuto semplicemente cliccando su un link aggiunto dinamicamente.
Nell'esempio sfruttiamo il PlaceHolder come base, sovrascrivendo l'evento di Render del contenuto con l'aggiunta di div e collegamenti per far implementare la nostra funzionalità:
using System; using System.Web.UI; using System.Web.UI.WebControls; using System.Text; using System.IO; namespace ASPItalia.com.WebControls { public class ExpandingControl: System.Web.UI.WebControls.PlaceHolder { protected override void OnLoad(EventArgs e) { // codice js necessario, lo registro solo una volta nella pagina string javascript = "\r\n<s" + "cript type=\"text/javascript\">function hideControl(c) {var ctrl = document.getElementById(c).style; ctrl.display = (ctrl.display == 'none')?'block':'none'; }</s" + "cript>"; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "ExpandingJavascript", javascript); } protected override void Render(HtmlTextWriter output) { // scrivo link e div per nascondere output.Write("<div><a href=\"javascript:hideControl('expand_" + this.ClientID + "');\">+/-</a></div>"); output.Write("<div style=\"display:block;\" id=\"expand_" + this.ClientID + "\">"); // scrivo il contenuto originale del control base.Render(output); output.Write("</div>"); } } }
Per vedere all'opera lo script:
https://www.aspitalia.com/liste/usag/esempi.aspx?ID=643
Per informazioni su come costruire Custom Control si veda:
#625 - Introduzione alla creazione di Custom Control
https://www.aspitalia.com/liste/usag/script.aspx?ID=625
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.