COMO UTILIZAR UN PLACEHOLDER

Para efectos de facilidad (la mia jaja) voy a hacer el ejemplo en codigo VB.NET.

Como a todos en cierto momento nos ha ocurrido, hemos tenido la necesidad de crear cierta flexibilidad en nuestras aplicaciones, pero como hacer esto en .net?
Para eso tenemos un objeto dentro del toolkit de nombre placeholder.






Primero en un webForm vamos a agregar un objeto placeholder para esto vamos a buscarlo dentro del visual studio en la parte de herramientas y arrastrarlo a nuestro web form.











Como se utiliza?

Para que el placeholder funcione tenemos que darle a entender que objetos queremos crear en tiempo de ejecucion eso se realiza de la siguiente forma:


Donde el_Control es el nombre de la variable que vamos a delegar al placeholder y el tipo del control esta definido dentro de los controles validos en .net (etiqutas caja de texto, botones, dataGrid's,etc).
Dim Label1 As New label
Dim TextBox1 As New TextBox
Dim Button1 As New Button
Explicado lo anterior la estructura para crear un control en tiempo de ejecucion quedaria de la siguiente forma:


Protected SubPage_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Label1 As New label
Dim TextBox1 As New TextBox
Dim Button1 As New Button
label1.ID = "label1"
label1.Text = "ETIQUETA CREADA EN TIEMPO DE EJECUCION"
Button1.ID = "cmd"
Button1.Text = "HAZ CLICK AQUI"
Text1.ID = "Txt1"
PlaceHolder1.Controls.Add(label1)
PlaceHolder1.Controls.Add(Text1)
PlaceHolder1.Controls.Add(Button1)
End Sub

El codigo anterior nos da como resultado algo parecido a esto:


ya sabemos como crear controles en tiempo de ejecucion, ahora veremos el metodo para acceder a ellos.
para acceder a los controles contenidos dentro del placeholder vamos a utilizar el metodo FindControl auxiliado de otra variable del mismo tipo del control al cual vamos a acceder de tal manera que la estructura quedaria de la siguiente forma:





empezaremos por la etiqueta:
Para esto vamos a crear una tabla en la cual vamos a colorcar en una fila un boton creado en tiempo de diseño y en la otra fila nuestro placeholder con el cual creamos los objetos en tiempo de ejecucion.
Dentro del codigo de nuestro boton hecho en tiempo de diseño vamos a escribir el siguiente codigo:


Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Referencia_lb As Label = PlaceHolder1.FindControl("label1")
Referencia_lb.Text = "CAMBIANDO EL TEXTO DEL OBJETO CREADO EN TIEMPO DE EJECUCION"
End Sub

El resultado quedaria algo asi:


De igual forma podemos acceder a los datos de la caja de texto.
Pero el boton es cosa muy distinta por que a este le tenemos que ligar una sub rutina para que ejecute una determinada accion, pero como se hace?
Para esto tenemos que encontrar el metodo de ligar el boton creado dinamicamente con esta subrutina.

las instrucciones que nos permite esta maravilla se llaman AddHandler y addressOf

sintaxis:

AddHandler nos permite acceder a la referencia del objeto.evento en el caso del boton el evento Click, por otro lado la instruccion addressOf nos da acceso a la sub rutina que se lanza al momento de cumplirse el evento.

Retomando el ejemplo anterior y realizando unas pequeñas modificaciones nos quedaria algo asi:


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
CrearObjetos()
End Sub

Function CrearObjetos() As Nullable
Dim label1 As New Label
Dim Button1 As New Button
Dim Text1 As New TextBox
Text1.ID = "Txt1"
label1.ID = "label1"
label1.Text = "EL TEXTO DEL OBJETO SE A CREADO EN TIEMPO DE EJECUCION"
Button1.ID = "cmd"
Button1.Text = "HAZ CLICK AQUI"
AddHandler Button1.Click, AddressOf DynamicButton
PlaceHolder1.Controls.Add(label1)
PlaceHolder1.Controls.Add(Text1)
PlaceHolder1.Controls.Add(Button1)
Return Nothing
End Function

Sub DynamicButton(ByVal Sender As System.Object, ByVal e As System.EventArgs)
Dim Referencia_lb As Label = PlaceHolder1.FindControl("label1")
Referencia_lb.Text = "CAMBIANDO EL TEXTO DEL OBJETO CREADO EN TIEMPO DE EJECUCION"
End Sub

Es importante que el tanto el Addhandler como el AddressOf sean agregados al boton justo antes de que este sea agregado al objeto placeholder para que el evento sea ligado correctamente.

Funciones mas utilizadas en ASP.NET

Equivalencia de AppPath
System.AppDomain.CurrentDomain.BaseDirectory

la forma mas comun de usarlo es de la siguiente forma:
Protected Shared AppPath = System.AppDomain.CurrentDomain.BaseDirectory

Obtener nombre del Server
System.Net.Dns.GetHostName()

Llenar un TemplateColumn desde una consulta
Text='<%# DataBinder.Eval(Container.DataItem, "Aqui la columna") %>'

Obtener acceso a los itemTemplates en un DataGrid
Variable de tipo del control = e.Item.Cells(Indice de celda).FindControl(“Nombre del objeto”)

EJEMPLO:
Si dentro del DataGrid tenemos un Label con el nombre Lb_Etiqueta entonces la instruccion quedaria de la siguiente forma.

Dim MiEtiqueta As Label = e.item.Cells(1).findControl("Lb_Etiqueta")

este metodo lo utilizamos dentro del ItemCommand del Datagrid, ahora si lo que queremos es acceder desde un boton fuera del datagrid la instruccion quedaria de la siguiente forma.

DataGrid.Items(Index).findControl("Lb_Etiqueta")

Que es .Net

Este Articulo es un resumen de la documentacion publicada por Microsoft en su Sitio:

Microsoft .NET es una plataforma de desarrollo y ejecución de aplicaciones. Esto quiere decir que no sólo nos brinda todas las herramientas y servicios que se necesitan para desarrollar modernas aplicaciones empresariales y de misión crítica, sino que también nos provee de mecanismos robustos, seguros y eficientes para asegurar que la ejecución de las mismas sea óptima. Los componentes principales de la plataforma .NET son:

  • Un entorno de ejecución de aplicaciones, también llamado “Runtime”, que es un componente de software cuya función es la de ejecutar las aplicaciones .NET e interactuar con el sistema operativo ofreciendo sus servicios y recursos.
  • Un conjunto de bibliotecas de funcionalidades y controles reutilizables, con una enorme cantidad de componentes ya programados listos para ser consumidos por otras aplicaciones.
  • Un conjunto de lenguajes de programación de alto nivel, junto con sus compiladores y linkers, que permitirán el desarrollo de aplicaciones sobre la plataforma .NET.
  • Un conjunto de utilitarios y herramientas de desarrollo para simplificar las tareas más comunes del proceso de desarrollo de aplicaciones
  • Documentación y guías de arquitectura, que describen las mejores prácticas de diseño, organización, desarrollo, prueba e instalación de aplicaciones .NET

Por otra parte, .NET representa la evolución COM (Component Object Model), la plataforma de desarrollo de Microsoft anterior a .NET y sobre la cual se basaba el desarrollo de aplicaciones Visual Basic 6 (entre otros tantos lenguajes y versiones).

Caracteristicas:

A continuación Enlistaremos algunas de las características principales de la plataforma Microsoft .NET:

  • Se dice que es una plataforma de ejecución intermedia, ya que las aplicaciones .NET no son ejecutadas directamente por el sistema operativo, como ocurre en el modelo tradicional de desarrollo. En su lugar, las aplicaciones .NET están diseñadas para ser ejecutadas contra un componente de software llamado Entorno de Ejecución (muchas veces también conocido como “Runtime”, o , “Máquina Virtual”). Este componente es el encargado de manejar el ciclo de vida de cualquier aplicación .NET, iniciándola, deteniéndola, interactuando con el Sistema Operativo y proveyéndole servicios y recursos en tiempo de ejecución.
  • La plataforma Microsoft .NET está completamente basada en el paradigma de Orientación a Objetos
  • .NET es multi-lenguaje: esto quiere decir que para poder codificar aplicaciones sobre esta plataforma no necesitamos aprender un único lenguaje específico de programación de alto nivel, sino que se puede elegir de una amplia lista de opciones. Veremos este tema con mayor detalle más adelante en la presentación.
  • .NET es una plataforma que permite el desarrollo de aplicaciones empresariales de misión crítica, entendiéndose por esto que permite la creación y ejecución de aplicaciones de porte corporativo que sean críticas para la operación de tipos variados de organizaciones. Si bien también es muy atrayente para desarrolladores no profesionales, estudiantes y entusiastas, su verdadero poder radica en su capacidad para soportar las aplicaciones más grandes y complejas.
  • .Net fue diseñado de manera tal de poder proveer un único modelo de programación, uniforme y consistente, para todo tipo de aplicaciones (ya sean de formularios Windows, de consola, aplicaciones Web, aplicaciones móviles, etc.) y para cualquier dispositivo de hardware (PC’s, Pocket PC’s, Teléfonos Celulares Inteligentes, también llamados “SmartPhones”, Tablet PC’s, etc.). Esto representa un gran cambio con respecto a las plataformas anteriores a .NET, las cuales tenían modelos de programación, bibliotecas, lenguajes y herramientas distintas según el tipo de aplicación y el dispositivo de hardware.
  • Uno de los objetivos de diseño de .NET fue que tenga la posibilidad de interactuar e integrarse fácilmente con aplicaciones desarrolladas en plataformas anteriores, particularmente en COM, ya que aún hoy existen una gran cantidad de aplicaciones desarrolladas sobre esa base.
  • .NET no sólo se integra fácilmente con aplicaciones desarrolladas en otras plataformas Microsoft, sino también con aquellas desarrolladas en otras plataformas de software, sistemas operativos o lenguajes de programación. Para esto hace un uso extensivo de numerosos estándares globales que son de uso extensivo en la industria, y acerca de los cuales iremos aprendiendo a lo largo del curso. Algunos ejemplos de estos estándares son XML, HTTP, SOAP, WSDL y UDDI.