2012-02-20 35 views
5

Đây là mã của tôi, trên một trang .ascx:ID động trên 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> 
<% } %> 

nhưng tôi nhận myTextBox_<%=i %> không phải là một identificator hợp lệ. Vì vậy, làm thế nào tôi có thể đặt "Dynamic ID"?

+1

Một khả năng để đạt được hiệu quả bạn đang sử dụng là sử dụng thuộc tính html và gán nó dựa trên vòng lặp trong vòng lặp của bạn. ví dụ. 'data-id' –

+0

George: bạn có thể đưa ra một ví dụ không? – markzzz

+1

thay vì có điều khiển người dùng chỉ vì lý do tại sao bạn không sử dụng điều khiển '' với điều khiển 'TextBox' làm mẫu? – balexandre

Trả lời

5

Bạn cần phải tạo vùng chứa cho hộp văn bản, chẳng hạn như điều khiển Bảng điều khiển, sau đó sử dụng Page_Load trong mã phía sau để lặp lại và thêm các hộp văn bản vào bảng điều khiển.

Ví dụ:

<%@ 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> 

Mã đằng sau:

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

Bạn có thể cho ví dụ về điều này không? – markzzz

+0

Tôi nghi ngờ ông có nghĩa là looping trong 'Page_Load' phương pháp và gọi' someContainer.Controls.Add (new TextBox() {ID: "someId"}); 'cho mỗi hộp văn bản, nơi' someContainer' là một 'Panel' hoặc container khác – WickyNilliams

+0

Kịch bản thực sự của tôi, không may, nó là một chút khác nhau! Trên thực tế, vào vùng chứa, tôi cần phải có các phần tử html khác. Vì vậy, tôi sẽ không thêm chúng lặp lại bảng điều khiển ... – markzzz

Các vấn đề liên quan