Home > ASP.NET > ASP.NET AJAX set tabs dinamically

ASP.NET AJAX set tabs dinamically

Aggiornamento 2014

Il controllo TabContanier ASP.NET   AJAX (  (Asynchronous JavaScript and XML) consente di utilizzare un set di tabulatori (tabs) per organizzare i conenuti nella pagina  occupando anche meno spazio.  I tabs sono controlli TabPanel con un proprio HeaderText e ovviamente uno spazio contenuti. Lo spazio contenuti può ovviamente ospitare una molteplicita di controlli.

La cosa più interessante tuttavia è data dalla possibilità di creare tutti i  TabPanel  di un TabContainers dimanicamente. Di seguito lo schema di codice per generare i TabPanel  dinamicamente. Nello specifico il contenuto di ogni TabPanel è generato chiamando uno  UserControl con la direttiva @ Reference che consente di controllare via programma il controllo.

.aspx.cs

....

protected void TabContainer1_Create(int Mypc, int _countcategory)
{

     string _title = "";
     int x = 1;
     string ControlName = "";

.....

     while (dr.Read())
     {
          ControlName = "TabPanel" + (x).ToString();

          // Create the tab panel's content container
          Control tabContent = new Control();

          // Create TabPanel
          AjaxControlToolkit.TabPanel tab = new AjaxControlToolkit.TabPanel();
          tab.ID = "tabPanel" + x.ToString();
          _title  = "" +  Server.HtmlDecode((String)dr["colvar"]);                   
          tab.HeaderText = _title; 

          // Create PlaceHolder
          PlaceHolder PH = new PlaceHolder();
          PH.ID = "PlaceHolder" + x.ToString();

          // Add Place Holder To TabContent
          tabContent.Controls.Add(PH);
          // Add tabContent To Tab
          tab.Controls.Add(tabContent);
          // Add tab to TabContainer 
          TabContainer1.Tabs.Add(tab);

          // Create UserControl da P_NewsList 
          ASP.P_NewsList UC_NewsList = new ASP.P_NewsList();             

          UC_NewsList.ID = "UC_NewsList" + x.ToString();

           _UC_Dy_Set(UC_NewsList, 0, _title, 0, PH, "");

           x++;
      }

      myConnection = news.myConnectionClose(myConnection);
      TabPanelNum = x - 1;
  ....
  }      

private void _UC_Dy_Set(ASP.P_NewsList My_UC, int _pid, string _title, int _Mypc, PlaceHolder _PlaceHolder, string _DLAPrdFilesS)
 {
            My_UC.ititle = Int32.Parse(_title);
            My_UC.IsEditable = IsEditable;
            My_UC.ModuleId = ModuleId;
            My_UC.myPar = myPar;
            My_UC.myConnection = myConnection;
            _PlaceHolder.Controls.Add(My_UC);
 }

...........

Direttiva @ Reference

La direttiva Reference che consente di controllare programmaticamente lo UserControl si inserisce con un espressione del tipo:

<%@ Reference Control="~/Controls/P_NewsList.ascx" %>

Il controllo  P_NewsList.ascx per poter essere richiamatao  dovrà avere esplcitiato ClassName nella prima riga.

<%@ Control Language="C#" AutoEventWireup="true"  ClassName="P_NewsList" %>

Richiamare il controllo con

ASP.P_NewsList UC_NewsList = new ASP.P_NewsList();

Per evitare perdite di tempo è bene accertarsi che non ci siano errori nel controllo richiamato. Diversamente si può avere l’errata percezione che ci sia qualcosa che non va nel sistema di chiamata mentre il problema sta da un altra parte.

Links

 

 

  1. Non c'è ancora nessun commento.
  1. No trackbacks yet.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: