Costruire un ExpandingControl per visualizzare/nascondere oggetti su una pagina

di Daniele Bochicchio, in ASP.NET, C#, Custom Server Controls,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi