Option Explicit On Option Strict On Imports System.Data Imports Extensiones Imports System.Web.Services Partial Class RH_Organigrama Inherits ClsPaginas #Region " PROPIEDADES " Private employees As DataTable Private Shared CveEmpresaAtribute As Integer Public Shared Cabecera As Integer Public Shared Empresa As Integer Public Shared Nivel As Integer Dim rgx As New Regex("^\d+$") Public Shared Property CveCabecera() As Integer 'Guardamos el ID de registro para saber cual registro Editar Get Return Cabecera End Get Set Cabecera = Value End Set End Property Public Shared Property CveEmpresaFiltro() As Integer Get Return Empresa End Get Set Empresa = Value End Set End Property Public Shared Property NivelOrg() As Integer Get Return Nivel End Get Set Nivel = Value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 'CveCabecera = UsuarioActual.CvePersonal 'CveEmpresaFiltro = UsuarioActual.CveEmpresa If Not IsPostBack Then txtNivel.Text = "" DdlSupervisorOrganigrama.SelectedIndex = 0 End If Dim viewFlag As Integer = CveCabecera CargaSuperioresOrganigrama() End Sub #Region " CARGA DATOS " Private Sub CargaSuperioresOrganigrama() Dim ObjRH As New ClsRH If ObjRH.GetPersonal(-1, UsuarioActual.CveEmpresa) Then DdlSupervisorOrganigrama.AppendDataBoundItems = True DdlSupervisorOrganigrama.Items.Add("Seleccione...") DdlSupervisorOrganigrama.DataSource = ObjRH.DtResultados Else DdlSupervisorOrganigrama.DataSource = Nothing Alert("Ocurrió un error al cargar el catálogo de Jefes Inmediatos") End If ObjRH.Dispose() If DdlSupervisorOrganigrama.DataSource IsNot Nothing Then DdlSupervisorOrganigrama.DataBind() End If End Sub Protected Sub GenerarOrg(sender As Object, e As EventArgs) Handles btConsultar.Click 'este metodo es el que carga el organigrama al dispara la funcion en JS CveCabecera = DdlSupervisorOrganigrama.SelectedValue.ToEntero CveEmpresaFiltro = UsuarioActual.CveEmpresa NivelOrg = If(rgx.IsMatch(txtNivel.Text), txtNivel.Text.ToEntero, NivelOrg) txtNivel.Text = "" DdlSupervisorOrganigrama.SelectedIndex = 0 ScriptManager.RegisterClientScriptBlock(Me, [GetType], "mykey", "drawChart()", True) 'ejecutamos la funcion de js para que haga la consulta de los registros End Sub #End Region Public Shared Function FetchData() As List(Of Object) Dim ObjRH As New ClsRH Dim DtTemporal As New DataTable Dim chartData As New List(Of Object)() If ObjRH.GetOrganigrama(CveEmpresaFiltro, CveCabecera, NivelOrg) Then DtTemporal = ObjRH.DtResultados.Copy For Each renglon As DataRow In DtTemporal.Rows Dim nombreEmpleado As String = renglon("nombreEmpleado").ToString Dim nombreSuperior As String = renglon("nombreSuperior").ToString Dim puesto As String = renglon("puesto").ToString Dim headerEmpleado As String = String.Format("{{{2}v{2}:{2}{0}{2},{2}f{2}:{2}{0}
{1}
{2}}}", nombreEmpleado, puesto, ControlChars.Quote) 'este es el JSON que da formato a los subtitulos se hace en String y la funcion lo hace JSON chartData.Add(New Object() {headerEmpleado, If(nombreEmpleado = nombreSuperior, "", nombreSuperior), puesto}) Next End If Return chartData End Function End Class