wiki
Benvenuto Ospite, sei in: Login
RSS RSS

Navigazione (Tech)





Ricerca wiki
»
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 linguetta
  • tabContainerType - Scheda a cui il tab si aggancerà, riferirsi all'Enum per le schede implementare
  • tabId - Id del Tab, deve essere univoco
  • tabPosition - 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");