2012-02-20 20 views
5

Este es mi código, en una página .ascx:ID dinámicos en asp: TextBox?

<% for (int i = 1; i <= 10; i++) 
    { %> 
    <asp:TextBox ID="myTextBox_<%=i %>" runat="server" Width="100%" CssClass="focus_out reset_content"></asp:TextBox> 
<% } %> 

pero me da myTextBox_<%=i %> no es un identificador válido. Entonces, ¿cómo puedo poner "ID dinámicos"?

+1

Una posibilidad para lograr el efecto que está buscando es usar un atributo html y asignarlo en función de la iteración en su ciclo. p.ej. 'data-id' –

+0

George: ¿puedes dar un ejemplo? – markzzz

+1

en lugar de tener un control de usuario solo para eso, ¿por qué no utilizas un control '' con un control 'TextBox' como plantilla? – balexandre

Respuesta

5

Necesita crear un contenedor para los cuadros de texto, como un control del Panel, y luego usar Page_Load en el código de atrás para recorrer y agregar los cuadros de texto al panel.

Ejemplo:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Untitled Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:Panel ID="pnlContainer" runat="server" /> 
    </div> 
    </form> 
</body> 
</html> 

Código atrás:

using System; 
using System.Configuration; 
using System.Data; 
using System.Linq; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Xml.Linq; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

     for (int i = 1; i <= 10; i++) { 

      TextBox txtNewTextBox = new TextBox(); 
      txtNewTextBox.ID = "myTextBox_" + i; 
      pnlContainer.Controls.Add(txtNewTextBox); 

     } 

    } 
} 
+0

¿Puede dar un ejemplo de esto por favor? – markzzz

+0

sospecho que se refiere al bucle en el método 'Page_Load' y llamar a' someContainer.Controls.Add (new TextBox() {ID: "someId"}); 'para cada cuadro de texto, donde' someContainer' es un 'Panel' o otro contenedor – WickyNilliams

+0

Mi escenario real, desafortunadamente, ¡es un poco diferente! De hecho, en el contenedor, necesito tener otros elementos html. Por lo tanto, no los agregaré haciendo un bucle en el panel ... – markzzz

Cuestiones relacionadas