2015-08-13 4 views
0

У меня проблема с событием Dynamic Textbox. У меня есть другой динамический текстовый блок с их событиями с изменениями, другие работают хорошо, но этот никогда не попадает в событие, свойство AutoPostBack = true, EnabledViewState тоже, EnabledViewTheming тоже, и оно входит в UpdatePanel, и я создаю динамический триггер.Событие Dynamic Textbox TextChanged не срабатывает

Это мой код:

TextBox DescUnit = new TextBox(); 
DescUnit.ID = "DescUnit_txt" + (No).ToString(); 
DescUnit.Text = "0.0"; 
DescUnit.TextChanged += new EventHandler(DescUnit_TextChanged); 
DescUnit.AutoPostBack = true; 
DescUnit.EnableViewState = true; 
DescUnit.EnableTheming = true; 
Trgr = new PostBackTrigger(); 
Trgr.ControlID = DescUnit.ID; 
UpdatePanel1.Triggers.Add(Trgr); 
Table.Rows[i - 1].Cells[3].Controls.Add(DescUnit); 

И это код моего События

protected void DescUnit_TextChanged(object sender, EventArgs e) 
{ 
    Descuento_Row.Visible = true; 
    int i = 1; 
    foreach (HtmlTableRow Row in Tab.Rows) 
    { 
     if (Row.ID != null && String.Compare(Row.ID.Substring(0, 6), "TRDet_") == 0) 
     { 
      Detalle = (HtmlTable)(Row.Cells[0].Controls[0]); 
      if (sender.Equals(Detalle.Rows[1].Cells[3].Controls[0])) 
      { 
       TextBox Cantidad = new TextBox(); 
       Clonar(Tab.Rows[i].Cells[1].Controls[0], Cantidad); 
       TextBox Precio = new TextBox(); 
       Clonar(Tab.Rows[i].Cells[4].Controls[0], Precio); 
       TextBox DescUnit = new TextBox(); 
       Clonar(Detalle.Rows[1].Cells[3].Controls[0], DescUnit); 
       TextBox ImpDesc = new TextBox(); 
       Clonar(Detalle.Rows[2].Cells[4].Controls[0], ImpDesc); 

       ImpDesc_txt.Text = ((Convert.ToDouble(ImpDesc_txt.Text) - Convert.ToDouble(ImpDesc.Text)) + (Convert.ToDouble((Convert.ToDouble(DescUnit.Text)/100)) * (Convert.ToDouble(Precio.Text) * Convert.ToInt32(Cantidad.Text)))).ToString(); 
       ImpDesc.Text = (Convert.ToDouble((Convert.ToDouble(DescUnit.Text)/100)) * (Convert.ToDouble(Precio.Text) * Convert.ToInt32(Cantidad.Text))).ToString(); 

       Detalle.Rows[2].Cells[4].Controls.Clear(); 
       Detalle.Rows[2].Cells[4].Controls.Add(ImpDesc); 
      } 

      i = i + 2; 
     } 
    } 
} 

Но никогда не попасть в него. Может кто-нибудь мне помочь?

+0

Вы уверены, что мероприятие не стреляет, а не то, что метод не работает так, как должен? – Ben

+0

Да, я уверен, я отлаживаю и не стреляю –

+0

Попробуйте удалить идентификатор ... посмотрите, работает ли это и дайте мне знать – Ben

ответ

0

Когда мы создаем элементы управления в ASP.Net, элементы управления можно создавать при загрузке формы или после нее. Но если вам нужны события элементов управления. вы должны инициализировать его в onInit Метод. Тогда он будет работать правильно. Если я хочу создать динамическое текстовое поле и его событие. и хотите добавить его в панель

Пожалуйста, обратитесь к следующему коду.

protected override void OnInit(EventArgs e) 
     { 
      TextBox t = new TextBox(); 
      t.ID = "t01"; 
      t.TextChanged += t_TextChanged; 
      t.AutoPostBack = true; 
      Panel1.Controls.Add(t); 
     } 

     protected void t_TextChanged(object sender, EventArgs e) 
     { 

     } 

Также убедитесь, что идентификатор элемента управления правильно. Должны быть межстрочные, подчеркивающие и буквенно-цифровые. ex t001, t_1 и т. д.

Но не должно быть места.

Смежные вопросы