Creare tab dimanici, consente di estendere le schede delle aziende, dei contatti e dei lead a piacimento, integrandole eventualmente con altri applicativi
Per creare un nuovo
tab, per prima cosa bisogna aggiungere un file .ascx (il nome è indifferente) nella cartella
TabControls.
Questa pagina è solo un Draft, il contenuto può essere incompleto e contenere errori.
Allego un esempio di codebehind per semplificare le cose:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using Digita.Tustena.Base;
using Digita.Tustena.WebControls;
using Digita.Tustena.Core;
using Digita.Tustena.BusinessObjects;
public partial class MyTab : GUserControl, ITabbed
{
protected void Page_Load(object sender, EventArgs e)
{
//check if the tab is visible, instead skip tab initialization
if (Parent.Parent is TustenaTabber)
((TustenaTabber)Parent.Parent).TabClick += new TabClickDelegate(StatsTab_TabClick);
}
protected override void OnInit(EventArgs e)
{
button.Click += new EventHandler(button_Click);
base.OnInit(e);
}
void StatsTab_TabClick(string tabId)
{
if (tabId == "vis"+this.tabId)
{
// parameters are exposed through Context. The id is "CE_Id"
int id = (int)GetContextElements("Id");
CompanyBO companyBO = new CompanyBO(UC);
companyBO.Load(id);
myId.Text = id.ToString();
myCompany.Text = companyBO.CompanyName;
}
}
void button_Click(object sender, EventArgs e)
{
((G)Page).RegisterJavascriptBlock(GetType(), "test", "alert('" + myCompany.Text + "');", true);
}
#region ITabbed Interface Declaration
public string tabCaption
{
//Tab Name
get { return "MyTab"; }
}
public TabContainersList tabContainerType
{
// Target Tabber
get { return TabContainersList.CrmCompany; }
}
public string tabId
{
// id
get { return "warrantyTab"; }
}
public byte tabPosition
{
// tab position
get { return 2; }
}
#endregion
}
ASP.NET html Example Page
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MyTab.ascx.cs" Inherits="MyTab " %>
<asp:LinkButton runat="server" ID="myId"></asp:LinkButton>
<asp:LinkButton runat="server" ID="myCompany"></asp:LinkButton>
<asp:Button runat="server" ID="button" Text="Test Postback" />
Una volta creato il file .cs, bisogna far ereditare la classe da
ITabber
e implementare esplicitamente l'interfaccia come nell'esempio.
tabCaption
- Etichetta che comparirà sulla linguettatabContainerType
- Scheda a cui il tab si aggancerà, riferirsi all'Enum per le schede implementaretabId
- Id del Tab, deve essere univocotabPosition
- Posizione del tab nel controllo
Completando le proprietà, il tab sarà completo e caricato dinamicamente nella scheda.
Ci sono alcuni unteripri punti da tenere in considerazione. Come si vede nell'esempio, nel page_load viene verificato se il controllo è visibile: questo serve ad evitare di inizializzare se il tab non è selezionato, e evita di accedere al context che conterrebbe elementi vuoti.
Infatti è nel context che il controllo trova i riferimenti al Business Object su cui la scheda è caricata. Nello specifico, ogni pagina scrive nel context l'Id del BO aperto ed è accessibili attraverso: (int)GetContextElements("Id");