Foros del Web » Programación para mayores de 30 ;) » .NET »

Agregar Controles usando una cadena

Estas en el tema de Agregar Controles usando una cadena en el foro de .NET en Foros del Web. Hola: Tengo el siguiente caso: tengo esto: >>> default.aspx <td> <asp:PlaceHolder ID="ph_flDefault_Presentacion" runat="server"> </asp laceHolder> </td> >>> default.aspx.vb strCodigo = "Todo esta bien <asp:Label ID="label_temp" ...
  #1 (permalink)  
Antiguo 14/07/2008, 17:52
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 7 meses
Puntos: 2
Agregar Controles usando una cadena

Hola:

Tengo el siguiente caso:

tengo esto:

>>> default.aspx
<td>
<asp:PlaceHolder ID="ph_flDefault_Presentacion" runat="server">
</asp laceHolder>
</td>

>>> default.aspx.vb

strCodigo = "Todo esta bien <asp:Label ID="label_temp" runat="server"></asp:Label>"

ph_flDefault_Presentacion.Controls.Add(New LiteralControl(strCodigo)

Bien, hasta ahi estoy tratando de agregar el contenido de strCodigo en X parte de la pagina, sin embargo, cuando hago eso el LABEL dentro de strCodigo no se procesa y veo en mi pagina en el codigo fuente todo igual.

Lo que quiero es poder agregar ese LABEL usando una cadena.

Y claro, no solo ese LABEL, se que puedo hacer:

ph_flDefault_Presentacion.Controls.Add(New LiteralControl(objLabel_Declarado)

Pero quiero la facilidad de hacerlo todo de una ves con una cadena.

Gracias.
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #2 (permalink)  
Antiguo 14/07/2008, 21:18
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 17 años, 2 meses
Puntos: 87
Respuesta: Agregar Controles usando una cadena

y porq no mejor hacer algo como

strCodigo=" Todo [label] esta bien escribe tu nombre: [textbox]"

haces un match con regex y haces un Regex.Split(strcodigo,regex); y de cada resultaod q no contenga [] lo conviertes en literal como lo tienes y tienes un switch para cada uno de los controles definidos.

switch(control)
{
case "label": panel.Controls.Add(new Label(Texto)); break;
case "textbox": panel.Controls.Add(newTextBox()); break;
....................
}

digo es una idea, pero como lo quieres hacer no te funcionara de nada porq cuando tu lo haces literal lo convierte a html plano y cuando agrega un control el servidor genera el html necesario.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 15/07/2008, 10:49
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: Agregar Controles usando una cadena

Hola, gracias por la respuesta...

Si, lo que mencionas ya lo he pensado, tambien entiendo se que por ser Literal no funciona...

Pero la idea que propones no puedo creer que ASP.NET no la tenga ya y me permita hacer algo como:

panel.Controls.Add(new CodeString(Texto));

Y que exista esa forma automatica.

O que exista otra forma de hacer lo que necesito, algo como:

panel.CodeContent = Texto

Una forma que me permita hacer lo que quiero.

No la he encontrado, y no puedo creer que nadie se haya topado con el caso por ejemplo de:

encuesta.aspx
--> if User_Sexo = Hombre then
panel.CodeContent = strEncuentaHombres
else
panel.CodeContent = strEncuentasMujeres

Algo asi simple, donde necesito distinto codigo contenido en un pedazo de la pagina que estoy desplegando.

Gracias.
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #4 (permalink)  
Antiguo 15/07/2008, 11:17
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 17 años, 2 meses
Puntos: 87
Respuesta: Agregar Controles usando una cadena

pues si eso pasara muchos manejan paneles q oculta o muestran pero tal cual

panel.Controls.Add("todos mis controles de servidor")

funcionaria si tus controles fueran todos html. pero solo asi he hicieras un form.
panel.Controls.Add("Tus controles en vez de asp <input type ="password" > </input> " o q se yo);

pero tal cual no. tan solo con el ciclo de la pagina tienes q crear los controles q son de servidor en el codebehind creando todos y cada uno de los controles
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #5 (permalink)  
Antiguo 15/07/2008, 12:35
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: Agregar Controles usando una cadena

Hola:

Gracias por responder, si, ahorita claro que todos mis controles HTML/JS, etc. funcionan perfecto, pero bien, quiero controles tipo servidor para seguir manteniendo cierto control padre desde ASP.NET

Pero bien, seguire buscando opciones... muchas gracias.
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #6 (permalink)  
Antiguo 16/07/2008, 20:57
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
Respuesta: Agregar Controles usando una cadena

Cita:
Iniciado por Neuron_376
Pero la idea que propones no puedo creer que ASP.NET no la tenga ya y me permita hacer algo como:

panel.Controls.Add(new CodeString(Texto));
No es que asp.net no te lo permita, más bien que estás tratando un objeto label como un texto, recuerda que estás ocupando controles del lado del servidor y se deben tratar como tal, recuerda que todo depende de lo que estés haciendo

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #7 (permalink)  
Antiguo 16/07/2008, 23:40
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: Agregar Controles usando una cadena

Hola Rook, gracias por la respuesta, lo he pensado tambien que mi enfoque para crear codigo dinamico este mal.

Conoces alguna forma para lograr algo asi como lo que requiero ?

Gracias.
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:38.