2013-04-18 1 views
1

Я создал некоторый TextBox динамически, используя код ниже, и я ввел текст в этом текстовом поле. Теперь я хочу прочитать идентификатор этого элемента управления при добавлении текста в базу данных. Как я могу получить идентификатор этого TextBox нажатием кнопки.Элементы управления закладок всегда возвращаются 0 при нажатии кнопки

for (int i = 0; i < dv_count; i++) 
{ 
    TextBox txt_box = new TextBox(); 
    txt_box.Text = ""; 
    txt_box.ID = "s" + i; 
    placeholder1.Controls.Add(txt_box); 
} 

protected void btn_act_proceed_Click(object sender, EventArgs e) 
{ 
    int count = placeholder1.Controls.Count; //always return 0 

    if (count > 0) 
    { 
     int dv_count = count/2; 

     for (int i = 0; i < dv_count; i++) 
     { 
      TextBox lbl_type = (TextBox)placeholder1.FindControl("s" + i); 
     } 
    } 
} 
+0

You r текстовое поле теряется, когда вы переходите к следующему i – Sayse

+0

В вашем обновленном edit .. whats placeholder1? – Sayse

+0

его создание. См. Мой обновленный пост. – user2176150

ответ

2

Попробуйте

В вашем Aspx Страница

<div runat="server" id="plcholder"> 
</div> 
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> 

теперь код за

protected void Page_Load(object sender, EventArgs e) 
{ 
    populate(); 
} 

public void populate() 
{ 
    for (int i = 0; i < 3; i++) 
    { 
     TextBox tb = new TextBox(); 
     tb.ID = "s" + i; 
     tb.Text = "Hello" + i; 
     plcholder.Controls.Add(tb); 
    } 
} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    int cont = plcholder.Controls.Count; 

    for (int i = 0; i < cont-1; i++) 
    { 
     TextBox tx = (TextBox)plcholder.FindControl("s" + i); 
     Response.Write(tx.Text); 
    } 
} 
+0

Супер. Он работает нормально. Огромное спасибо. – user2176150

0

Я не вижу, чтобы вы добавляли элементы управления к заполнителю на первом месте. попробуйте это

for (int i = 0; i < dv_count; i++) 
{ 
    TextBox txt_box = new TextBox(); 
    txt_box.Text = ""; 
    txt_box.ID = "s" + i; 
    placeholder1.Controls.Add(txt_box); 
} 

TextBox lbl_type = (TextBox)placeholder1.FindControl("s" + i); 
+0

жаль, что я пропустил это, пожалуйста, см. Мое обновленное сообщение – user2176150

+0

, когда вы запускаете этот цикл? –

1

Управление будет потеряно во время postback. Итак, на preinit вам нужно создать элементы управления еще раз.
Или вы можете держать свои элементы управления в сеансе и получать его обратно от обратной передачи.
Хорошая ссылка http://www.codeproject.com/Articles/3684/Retaining-State-for-Dynamically-Created-Controls-i
http://www.codeproject.com/Articles/502251/How-to-create-controls-dynamically-in-ASP-NET-and